window.postMessageのポイントは、異なるドメインでホストされているウィンドウ/フレーム間の安全な通信を可能にすることであるように見えますが、実際にはChromeではそれを許可していないようです。
シナリオは次のとおりです。
- ドメインAのページに<iframe>(
src
ドメインB *にある)を埋め込む - <iframe>は、ほとんどが<script>タグになり、最後に実行されます...
- window.postMessage(some_data、page_on_A)を呼び出します
<iframe>は間違いなくドメインBのコンテキストにあり、その<iframe>に埋め込まれたJavaScriptが正しく実行さpostMessage
れ、正しい値で呼び出されることを確認しました。
Chromeで次のエラーメッセージが表示されます。
Aにメッセージを投稿できません。受信者の原点はBです。
Aのページにメッセージイベントリスナーを登録するコードは次のとおりです。
window.addEventListener(
"message",
function (event) {
// Do something
},
false);
私も呼び出してみましたwindow.postMessage(some_data, '*')
が、エラーを抑えるだけです。
ここで要点を見逃しているだけですか、window.postMessage(...)はこれを目的としていませんか?それとも私はそれをひどく間違っているだけですか?
* MIMEタイプのtext / html。そのままにしておく必要があります。