Либо 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);
Соответствующая скрипка:
Сообщение никогда не получено. Какова причина?
2 ответа
Решение
Я изменил скрипку. Вы слушали не то событие.
Должно быть
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);