ホームページ >ウェブフロントエンド >jsチュートリアル >別のドメインから iFrame のコンテンツにアクセスするにはどうすればよいですか?

別のドメインから iFrame のコンテンツにアクセスするにはどうすればよいですか?

DDD
DDDオリジナル
2024-12-23 15:04:14272ブラウズ

How Can I Access an iFrame's Content from a Different Domain?

クロスドメイン iFrame アクセス: 解決策

別のドメインから iFrame のコンテンツにアクセスしようとすると、 「プロパティへのアクセス許可が拒否されました」エラー。この問題は、セキュリティ上の理由からドメイン間のデータ交換を制限するブラウザのクロスドメイン ポリシーが原因で発生します。

この制限を克服するには、両方のフレーミング サイトを制御できる場合に使用できる postMessage メソッドを使用できます。そして iFrame のコンテンツ。このメソッドを使用すると、異なるドメイン間でメッセージを送受信できます。

実装例は次のとおりです:

フレーム化されたサイト (iframe.net):

<script>
  window.onmessage = function(event) {
    event.source.postMessage(document.body.innerHTML, event.origin);
  };
</script>

メインページ(example.com):

<script>
  window.onmessage = function(event) {
    alert(event.data);
  };
</script>

<!-- Trigger the message sending -->
<iframe>
document.getElementById('myframe').contentWindow.postMessage('', '*');

postMessage メソッドは、送信するメッセージとターゲットのオリジン (メッセージを受信するドメイン) の 2 つの引数を取ります。この例では、メッセージをどのドメインでも受信できることを示すために「*」を使用しています。

このコードが実行されると、iFrame の本文を含むメッセージがフレーム化されたサイトからメインに送信されます。ページのアラート ボックスに表示されます。これは、クロスドメイン ポリシーをバイパスし、postMessage メソッドを使用して 2 つのドメイン間でデータを交換する方法を示しています。

以上が別のドメインから iFrame のコンテンツにアクセスするにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。