2011-12-16 8 views
0

iframe을 사용하여 제출을 게시하면 파일이 업로드됩니다. 반환 된 내용까지 모든 것이 잘 작동합니다.iframe submit 게시 된 내용 가져 오기

iframe을 페이지에 표시하면 iframe의 함수에서 반환 된 html이 표시됩니다. 페이지의 내용을 대체하기 위해 iframe의 내용을 가져 오는 데 많은 어려움이 있습니다.

기본적으로 본문 iframe의 내용을 가져 와서 페이지의 본문 태그에 넣습니다. 1 또는 2 줄이지만 모든 jquery, document 또는 getElementById 아이디어는 웹에서 발견되지 않습니다.

내 reload 함수에서 "console.info ('somemessage')"를 사용하려고하면 이상하게 느껴진다. console이 없다는 오류가 발생한다. 이유는 모르겠지만 내 자바 스크립트 포커스가 iframe에 있고 방화범이 끌리지 않는 것 같습니다.

코드가 제거되었습니다. 작업중인 .load 이벤트를 다시 시도하십시오. 하지만 두 번째 줄은 내용을 몸에 쓰려고합니다. 내가 그것을 주석 처리 할 때 iframe이 내 콘텐츠와 함께 표시됩니다. 주석 처리를 해제하면 전체 페이지가 새로 고침됩니다. 부모 페이지에서

 if (isStarted == false) { 
      isStarted = true; 
      statustracker.start(); 
      //style="height:0px;width:0px;" 
      var iframe = $('<iframe name="postframe" id="postframe" class="hidden" />'); 
      $('div#iframe').append(iframe); 

      $('#ImportDetailForm').attr("target", "postframe") 
      form.submit(); 

      $("#postframe").load(function() { 
       iframeContents = $("iframe")[0].contentDocument.body.innerHTML; 
       $("body").html(iframeContents); // <--- the problem 
      }); 
     } 
+0

모든 양식 설정 (attr)은 양식 태그에 있습니다. 양식 객체는 jquery 유효성 검사 submithandler의 객체입니다. –

답변

0

(iframe이 포함 된 하나), 그렇게처럼 '메시지'이벤트에 대한 이벤트 리스너를 설정할 수 있습니다 :

당신은 iframe에 다음
window.addEventListener("message", receiveMessage, false); 
function receiveMessage(e) { ... } 

, 단지 게시 이 같은 '부모'창에 메시지가

parent.postMessage(someString, parentUrl); 

메시지는 문자열이기 때문에, 당신은 당신이 iframe이 부모 창 사이에 보내는 데이터를 직렬화해야합니다 - 내가 JSON을 제안! 그래서 귀하의 경우, 업로드 요청에서 반환 HTML을 serialize하고 부모에게 게시 한 다음 해당 측면에서 역 직렬화하여 DOM에 삽입하십시오.

유효하지 않은 불법 문자열이 지정된
+0

iframe 콘텐츠를 직렬화하는 방법을 알 수 없습니다. jquerys/json .serialize()를 사용하려고하지만 작동하지 않습니다. –

+0

어떤 방식으로 작동하지 않습니까? 오류 메시지가 있습니까? –

0

"코드"iframeContents가 비어 아마도 때문에

(12).

  $("#postframe").load(function() { 
       var win = document.getElementById("postframe").contentWindow; 
       var parent_url = decodeURIComponent(document.location.hash.replace(/^#/, '')), link; 
       iframeContents = $("#postframe").find("body").contents().serialize(); //$("iframe")[0].contentDocument.body.innerHTML; 
       console.info(iframeContents); 
       //$(this).parent("body").html(iframeContents); 
       win.postMessage(iframeContents, parent_url, parent); 
      }); 
관련 문제