Либо postMessage, либо addEventListener не работает

Следующий код JavaScript использует функции postMessage / addEventListener HTML5 для отправки сообщения себе:

window.addEventListener('testMsg', function(event) {
   alert('got a message');   /* Never happens. Why? */
}, false );

window.addEventListener('load', function(event) {
   alert('sending message');    
   window.postMessage('testMsg', '*');
}, false);

Соответствующая скрипка:

http://jsfiddle.net/ZGvLg/3/

Сообщение никогда не получено. Какова причина?

2 ответа

Решение

Я изменил скрипку. Вы слушали не то событие.

FIDDLE

Должно быть

window.addEventListener('message', function(event) {
    alert('got a message');   /* Never happens. Why? */
}, false );

window.addEventListener('load', function(event) {
    alert('sending message');    
    window.postMessage('message', '*');
}, false);

Вы слушаете testMsg событие, но postMessage вызовет message событие.

Как говорили другие, вам нужно прислушиваться к "message" событие, а не "testMsg". Вот более понятный пример рабочего кода

window.addEventListener('message', function(event) {
    alert('got a message'); // event.data == "hello world"
}, false );

window.addEventListener('load', function(event) {
    alert('sending message');
    window.postMessage('hello world!', '*');
}, false);
Другие вопросы по тегам