1. ホーム
  2. javascript

[解決済み] メインドキュメントのJavaScriptからIFrameのドキュメントを取得する

2023-07-10 08:35:32

質問

このような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>

問題は、「Bad"」というメッセージが表示されることです。これは、iframeのドキュメントが正しく取得されていないことを意味し、実際にGetDoc関数によって返されるのは親ドキュメントです。

もし、私の間違いがどこにあるのか教えていただければありがたいです。(私はIFrameでホストされたドキュメントを取得したいのです。)

ありがとうございます。

どのように解決するのですか?

以下のコードで、IFRAME内のドキュメントにアクセスできるはずです。

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

しかし、フレーム内のページが別のドメイン(google.comなど)から読み込まれている場合は、このようなことはできません。 これは、ブラウザの 同一生成元ポリシー .