2012-01-25 16 views
0

postMessage経由でドメインメッセージを繰り返し送信しても、私のwindow.addEventListenerの関数が起動されません。それは全く応答を受信して​​いないようです。コードは次のとおりです。html5 postMessage not working

var myUrl = 'http://localhost:8085'; 
var newPopup = window.open(myUrl, '_blank', ''); 

// Create listener 
window.addEventListener('message',function(event) { 

    if (event.origin !== 'http://localhost:8085') return; 
    console.log('received response: ',event.data); 

},false); 

// Setup messenging 
setInterval(function(){ 
    var message = 'Hello! The time is: ' + (new Date().getTime()); 
    console.log('blog.local: sending message: ' + message); 
    newPopup.postMessage(message,'http://localhost:8085'); 
},2000); 

なぜリッスンがメッセージを受け取っていないのですか?

答えて

0

不適切なウィンドウにハンドラを登録しています。試してみてください。

newPopup.addEventListener('message',function(event) { 
    ... 
+0

メッセージ送信者(ポップアップ)ではなく、イベントリスナーをターゲットウィンドウに登録してください。 – zakdances

+0

あなたのコードでは、メッセージ送信者はあなたの現在のウィンドウで、 'postMessage'のターゲットはあなたのポップアップウィンドウです。そのため、リスナーはポップアップウィンドウに登録する必要があります。 –

+0

newPopup.postMessage()はメッセージがnewPopupからポストされていることを意味しませんか? – zakdances