JavaScriptはHTML 5のwindow.postMessageを使ってクロスドメイン通信例を実現します。


JavaScriptは同源戦略の制限のため、ドメインをまたぐ通信はずっと厄介な問題である。もちろん解決策もたくさんあります。1.document.doman+iframeの設定は、メインドメインと同じで、サブドメインが違います。2.iframeとlocations.hashを利用して、データが直接urlに暴露されました。データ容量とタイプは限られた3.Flash Locannectionで、対象は一つのSWFファイルまたは複数のSWFファイルの間で通信できます。同じクライアントであればいいです。アプリケーションを横断して、ドメインを越えることができます。window.nameはデータを保存します。また、ドメインを跨ぐiframe静的な代理ダイナミックな転送プログラムは、window.nameのページのurl変化によってnameの変化しない特性を十分に活用しました。各プログラムはネット上にたくさんの実例コードがあります。自分で検索してみてください。httml 5の中で最もクールなAPIの一つは、文書メッセージにまたがってCross Dcument Messagingを送信することである。高級ブラウザInternet Explorer 8+,chrome,Firefox,OperaとSafariはこの機能をサポートします。この機能の実現も非常に簡単で、主に情報を受け取る「メッセージ」イベントとメッセージを送る「postMessage」方法を含む。メッセージを送信する「postMessage」方法は、外部のウィンドウにメッセージを送信します。
otherWindow.postMessage(message, targetOrigin);
other Window:ターゲットウィンドウ、つまりどのwindowにメッセージを送信しますか?window.frame属性のメンバーまたはwindow.open方法によって作成されたウィンドウパラメータ説明です。1.message:送信するメッセージです。タイプはStering、Object(IE 8、Object)です。9はサポートされていません。2.targett Origin:メッセージ受信範囲を限定するものではなく、‘*’受信情報を使用してください’message’イベント
 
var onmessage = function (event) {
var data = event.data;
var origin = event.origin;
//do someing
};
if (typeof window.addEventListener != 'undefined') {
window.addEventListener('message', onmessage, false);
} else if (typeof window.attachEvent != 'undefined') {
//for ie
window.attachEvent('onmessage', onmessage);
}
は、Eventオブジェクトを最初のパラメータで受信します。3つの共通属性があります。ie 9で渡されるデータタイプの値は文字列タイプをサポートしていますが、JSONオブジェクトと文字列との間の相互変換を使ってこの問題を解決することができます。2.ie 6、ie 7は互換案を書く必要があります。個人的にはwindow.nameが信頼できると思います。