2013-01-21 2 views
14

window.postMessageには、自分のメッセージを送信できるドメインを指定します。すべてのサブドメインに適用できることを指定する方法はありますか?postMessageをすべてのサブドメインに適用する方法

物事は試してみました:

iframe.contentWindow.postMessage('The message to send.','http://*.wordpress.com'); 
iframe.contentWindow.postMessage('The message to send.','http://wordpress.com'); 

答えて

6

いや、ない可能。

ターゲットiframeが既知の有限の起源のものであることがわかっている場合は、唯一のシナリオです(例: "http://a.wordpress.com"、 "http:// b 「。wordpress.com」および「http://c.wordpress.com」)。この場合、起源ごとにpostMessageリクエストを作成してください。これらのうちの1つだけが成功し、もう1つは失敗するためです。

4

すべてのドメイン名を知らなくても可能です。ただ、リファラURLを取得し、あなたが実際にそれから、原点を取得:

var parentOrigin = document.referrer.match(/^.+:\/\/[^\/]+/)[0]; 

、唯一のものは、URLが基準(wordpress.comで終わる)と一致し、yesの場合、この特定のメッセージを許可するかどうかを確認することですドメイン。

ユーザーが別の場所でiframeの中をナビゲートするまでのみ動作します。リファラーが変更されます。ただし、リファラーはiframeのlocalStorageに保存することができます。可能なドメインのリストがあり、提案されたリストからすべてのドメインにメッセージを送信することができますIvan Zuzak

+0

これはうまく動作し、親ページの完全なURLを返します。 iframe内にナビゲーションがある前に値を取得するだけです。 – dougwig