2017-01-20 7 views
0

私のドメインのサブドメインには、例えばfile.htmlと呼ばれるhtmlファイルがあります。それには<script src="https://example.com/script.js">も含まれています。JS postMessageは機能しません

次に、このscript.jsは、以下のように見えるこのHTMLと接続され、いくつかのリスナー、また親にメッセージを送信する機能、持っている:src私はiframeを持っている別のドメイン上で、その後

v.sendMessageToParent = function (message) { 
    var jsonMessage = { 
     action: message 
    }; 
    var win = window.frames.target; 
    win.postMessage(jsonMessage, '*'); 
}; 
v.sendActionMessageToParent = function (action) { 
    var jsonMessage = { 
     action: 'action', 
     type: action 
    }; 
    var win = window.frames.target; 
    win.postMessage(jsonMessage, '*'); 
}; 

file.htmlです。

この別のドメインにはまた、<script src="example.com/main.js">があります。script.jsから送信されたメッセージを聞くには、main.jsが必要です。 main.js

私はこのコードを持っている:

if (window.addEventListener) { 
    window.addEventListener("message", messageHandler); 
} else { 
    window.attachEvent("onmessage", messageHandler); 
} 
function messageHandler(event) { 
    console.log(event.data); 
} 

をしかし、私は何も得ることはありません。 JS、ドメインやその他のエラーは表示されず、コンソールには表示されません。

どこが間違っていますか?

+0

を - 現在のウィンドウの直接のサブフレームをリスト、配列のようなオブジェクトである、ウィンドウ自体を返します。 。だから、この建設window.frames.targetは何ですか? –

+0

私はちょうどどこかからこの関数を取ったので、... window.parent.postMessageに変更しようとしましたが、 – Coffee

答えて

1

おそらくあなたはインラインフレーム「ターゲット」の名前を忘れてしまった:MDNのwindow.framesから

<iframe src="http://target.com" name="target"> 

<script> 
    var win = window.frames.target; 
    win.postMessage("message", *); 
</script> 
関連する問題