同一オリジンポリシーの制限により、JavaScript にはクロスドメイン通信の問題が発生します。典型的なクロスドメインの問題には、iframe と親の間の通信などが含まれます。
いくつかの一般的な解決策:
(1) document.domain iframe;
(2) スクリプトを動的に作成します。
(3) iframe location.hash;
(4) フラッシュ。
ここではこれらのメソッドについては詳しく説明しません。記録されるのは HTML5 の window.postMessage です。
postMessage は、IE8、Firefox、Opera、Safari、Chrome と互換性があります。
テストには 2 つの外部サーバーが必要です もちろん、ローカル サーバーとオンライン サーバーを 2 つの外部サーバーとして使用することもできます。
phonegap を使用して開発する場合は、クライアントにリクエスト ファイルをインストールし、サーバーのデータ処理を動的にリクエストしてデータを取得し、表示することができます。このようにして、任意の Web 開発言語と手法を使用して、phonegap アプリに必要なバックエンドを開発できます。
1. postMessage の使用法
postMessage は、JS クロスドメインの問題を解決するために HTML5 によって導入された新しい API であり、複数の iframe/ウィンドウを許可します。クロスドメイン通信。
構造は次のとおりであると仮定します。
"テスト">情報はまだありません
"テスト">まだ情報がありません。
以下は test.html の Javascript コード (データ送信) です: var win = document.getElementById("iframe" ).contentWindow;document.querySelector('form').onsubmit=function(e){JavaScript コード
JavaScript コード
とても簡単なので一目で分かると思います。 e.data には送信されたデータが含まれ、e.origin は送信元ドメインを指します。
そして、iframe.html も test.html に応答データを送信し、test.html はそのデータを受信します。コードが似ている場合は、コードを投稿しません。
2. Ajax クロスドメイン リクエスト
上記のクロスドメイン通信に基づいて、iframe の onmessage 処理関数に Ajax コードを配置するだけです。 html、postMessage によって渡されたデータをパラメータとして使用してリクエストを test.html に送信し、返されたデータを postMessage を使用して test.html に渡します。このようにして、クロスドメイン Ajax リクエストが実装されます。実はとても単純なことなのです。
サンプルコードを投稿しますが、上記のコードとは関係ありません。
Kemudian berikan demo yang tidak sedap dipandang.
Jika anda berminat dengan permintaan kod, sila gunakan alat pembangun untuk menyemaknya "zebo man" dibaca daripada pangkalan data, dan "my msg" ialah parameter permintaan Ajax yang dihantar oleh sendAndReceive. .html ke test.php , dihantar kembali ke sendAndReceive.html melalui test.php dan iframeforAjax.html.
3. Petua
Anda perlu mendapatkan contentWindow iframe untuk memanggil postMessage.
postMessage mesti dipanggil selepas iframe dimuatkan untuk berjalan seperti biasa. (Ini mengambil masa yang lama untuk saya)