IT Share you

메인 문서의 JavaScript에서 IFrame의 문서 가져 오기

shareyou 2020. 12. 14. 21:07
반응형

메인 문서의 JavaScript에서 IFrame의 문서 가져 오기


이 HTML 코드가 있습니다.

<html>
  <head>
    <script type="text/javascript">
      function GetDoc(x)
      {
        return x.document ||
          x.contentDocument ||
          x.contentWindow.document;
      }

      function DoStuff()
      {
        var fr = document.all["myframe"];
        while(fr.ariaBusy) { }
        var doc = GetDoc(fr);
        if (doc == document)
          alert("Bad");
        else 
          alert("Good");
      }
    </script>
  </head>
  <body>
    <iframe id="myframe" src="http://example.com" width="100%" height="100%" onload="DoStuff()"></iframe>
  </body>
</html>

문제는 "나쁜"메시지가 표시된다는 것입니다. 즉, iframe의 문서가 올바르게 가져 오지 않았고 GetDoc 함수가 실제로 반환하는 것은 부모 문서입니다.

내가 어디에서 실수를했는지 알려 주시면 감사하겠습니다. (IFrame에서 호스팅되는 문서를 받고 싶습니다.)

감사합니다.


다음 코드를 사용하여 IFRAME의 문서에 액세스 할 수 있어야합니다.

document.getElementById('myframe').contentWindow.document

그러나 프레임의 페이지가 다른 도메인 (예 : google.com)에서로드 된 경우에는이 작업을 수행 할 수 없습니다. 이는 브라우저의 동일 출처 정책 때문입니다 .


문제는 IE (내가 테스트하고 있다고 생각하는)에서 <iframe>요소 document에 iframe이 포함 된 문서를 참조 하는 속성이 있으며 이는 contentDocument또는 contentWindow.document속성 보다 먼저 사용되고 있다는 것 입니다. 필요한 것은 :

function GetDoc(x) {
    return x.contentDocument || x.contentWindow.document;
}

또한 document.all모든 브라우저에서 사용할 수있는 것은 아니며 비표준입니다. document.getElementById()대신 사용하십시오 .

참고 URL : https://stackoverflow.com/questions/3999101/get-iframes-document-from-javascript-in-main-document

반응형