ホームページ  >  記事  >  バックエンド開発  >  iframe の子ページと親ページ間のドメイン内およびクロスドメイン通信の例

iframe の子ページと親ページ間のドメイン内およびクロスドメイン通信の例

一个新手
一个新手オリジナル
2017-09-11 09:26:062580ブラウズ

iframe サブページと親ページ間の通信は以前からよく研究されていたのですが、これまで使ったことがなかったので勉強していませんでしたが、今日突然疑問が湧いたので試してみました。クロスドメイン通信には Tencent チームが使用されました。指定されたメッセンジャー.js のソース コードも非常にシンプルであり、一見の価値があります。ここでは簡単な例を示します。

ドメイン内通信

親ページ

<!DOCTYPE html><html><head><title>iframe子页面与父页面通信(同域)</title><meta charset="utf-8"><script type="text/javascript">
    function sayHello(){
        alert("iframeCommunication1.html");
    }    function say(){
        child1.window.sayHello();
        child1.window.document.getElementById("button_c").value = "the call is complete";
    }</script></head><body><h1>iframe子页面与父页面同域通信</h1>调用子页面child1.html中的sayHello()函数:<input type="button" id="button_p" name="hello" value="call" onclick="say()"><br><br><iframe src="child1.html" id="child1"></iframe></body></html>

サブページ

<!DOCTYPE html><html><head><title>iframe子页面与父页面通信(同域)</title><meta charset="utf-8"><script type="text/javascript">
    function sayHello(){
        alert("child.html");
    }    function say(){
        parent.sayHello();
        parent.window.document.getElementById("button_p").value = "the call is complete";
    }</script></head><body><p>调用父页面iframeCommunication1.html中的sayHello()函数:</p><input type="button" id="button_c" name="hello" value="call" onclick="say()"></body></html>

クロスドメイン通信

IE8以降および最新のブラウザの場合、クロスドメイン通信は主にhtml5によって提供されるpostMessage APIを使用してドメイン間通信を実現します。 postMessage の機能は、プログラマがドメインを越えて 2 つのウィンドウ/フレーム間でデータ情報を送信できるようにすることです。基本的にはクロスドメイン AJAX に似ていますが、ブラウザとサーバーの間で対話するのではなく、2 つのクライアント間で通信します。
古いブラウザの場合、messenger.jsは親ウィンドウとiframe間でナビゲータオブジェクトを共有する機能を利用し、ナビゲータオブジェクトにメッセージコールバック関数を登録して情報の転送と共有を実現します。
非常に簡単な例を以下に示します:

親ページ

<!DOCTYPE html><html><head><title>iframe子页面与父页面通信(跨域)</title><meta charset="utf-8"><script src="js/messenger.js"></script></head><body><h1>iframe子页面与父页面跨域通信</h1>向子页面child2.html发送信息:<input type="button" id="button_p" value="call" onclick="sendMessage(&#39;child2&#39;)"><br><br>获取信息:<pre id="output">


子ページ

<!DOCTYPE html><html><head><title>iframe子页面与父页面通信(跨域)</title><meta charset="utf-8"><script src="js/messenger.js"></script></head><body><h1>child2</h1>向父页面iframeCommunication2.html发送信息:<br><input type="button" id="button_p" value="call" onclick="sendMessage(&#39;parent&#39;)"><br><br>获取信息:<pre id="output">


参考

[1] js iframeサブページと親ページの通信
[2] iframeクロスドメイン通信のユニバーサルソリューション - 2つ目! (究極のソリューション) | Tencent AlloyTeam
[3] Messengerjs プロジェクトのホームページ

以上がiframe の子ページと親ページ間のドメイン内およびクロスドメイン通信の例の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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