このチュートリアルhttp://davidwalsh.name/window-postmessageに従い、Chrome と Firefox では機能するが IE 10 では機能しないクロスドメイン メッセージング スクリプトを作成しました。
1 つのサーバー (例: 192.168.15.223) -- 受信側
<script>
//listener
window.addEventListener('message',function(event) {
if(event.origin !== 'http://120.0.0.211') return;
document.getElementById('cc').innerHTML = event.data;
},false);
window.attachEvent('onmessage',function(event) {
if(event.origin !== 'http://120.0.0.211') return;
document.getElementById('cc').innerHTML = event.data;
},false);
</script>
<p>At 192.18.15.223 server</p>
<div id='cc'>Nothing received yet</div>
別のサーバー (例: 120.0.0.211) -- 送信者
<script>
//create popup window
var domain = 'http://192.18.15.223';
var myPopup = window.open(domain + '/receiver','myWindow','width=400,height=200');
//message sender
function popup(){
var message = 'A message sent from 120.0.0.211:';
myPopup.postMessage(message,domain); //send the message and target URI
}
</script>
<div id="bb">At 120.0.0.211 server</div>
<button type="button" onclick="popup()">send the message!</button>
上記のスクリプトは Chrome と Firefox で完全に動作し、ウィンドウがポップアップしてメッセージを受信できますが、IE(8+) ではウィンドウをポップするだけでメッセージが受信されません (または送信できない可能性があります)。
私の主な目的は、2 つのドメインで単純なデータ (テキスト、1 枚の写真など) を送受信し、バックエンドにあまり多くの変更を加えないようにすることです。したがって、Web サービスは考慮されません。
どんな助けでも感謝します!
問題の調査に役立つリンクをいくつか示します。
この投稿では、IE で attachEvent を使用することを提案しています。これは、上記のコードで既に行っています。 Internet Explorer での addEventListener
この Microsoft 公式ドキュメントは、IE 8+ が addEventListener をサポートする必要があることを示しています: http://msdn.microsoft.com/en-us/library/ie/cc197057(v=vs.85).aspx
これは、Jquery bind() を使用して addEventListener を置き換えることを推奨しています: JavaScript の addEventListener メソッドに相当する jQuery