私はユーザーが自分のサイトに入れることができる埋め込みコードをいくつか持っています。ページ上に2つの子iframeを作成します。私はそれらの子供たちがコミュニケーションできるようにしたいと思います。postMessageを使用している2つのiframeの子どもの間の通信
私は2人のiframe子供たちが直接通信することはできませんので、私はメッセージのためのリレーとして親を使用していたJavaScriptのwindow.postMessage
https://developer.mozilla.org/en-US/docs/DOM/window.postMessage
を使用しています。ただし、埋め込み可能なコードなので、親は別のドメインに置くことができます。
3つのすべての(親と2人の子供が)同じドメイン上にある、それはかなり簡単だと私は、このセキュリティチェックはe.origin
をチェックして取り組んできたエレガントな方法は何ですか
# coffeescript
# host = "http://www.mysite.com"
host = "http://localhost"
receive_message = (e) ->
console.log("received message from " + e.origin + ": " + e.data)
return if e.origin != host
if e.data == "show"
...
else if e.data == "hide"
...
window.addEventListener("message", receive_message, false)
私自身のサイトです親がどのドメインにも属している可能性がある場合は、起点を確認しますか?
原点をローカルホストにできるスクリプトのデバッグを許可するにはどうすればよいですか?
非破壊/変更メッセージが渡されている場合は、データパラメータをチェックするだけで十分ですか?
ありがとうございます!
うわー - あなたは正しいです!私はこれを逃したとは信じられません。働いて助けてくれてありがとう! –
Np、いつでも。 :) –
@IvanZuzak、(iframe1、親ウィンドウとiframe2)はiframe2のコードが読み込まれていない場合、iframe1のコードでparent.frames [1] .postMessage()を使用するとiframe2が読み込まれることを保証できますか? 、postMessage()を呼び出すとエラーが発生します – wengeezhang