window.addEventListener (сообщение не работает с IE11

Я открываю всплывающее окно, и оно отправило сообщение тому, кто открыл его. Я добавил ListenerEvent в главное окно для «сообщения», но этот слушатель никогда не вызывается в IE 11, он работает с Firefox.

Я уже пытаюсь дождаться окна или трюка, чтобы заменить eventListener на setInterval, но в этом случае я не могу получить доступ к данным события. И я проверил все темы, похожие на мой вопрос. Поэтому я просто попробовал небольшой и простой пример, чтобы проверить, что «сообщение» addEventListener работает с IE11, а не работает.

Скрипт на моей главной html-странице:

var popup = window.open("popup.html", "Connection", 
                'toolbar=no, location=no, directories=no, menubar=no, status=yes, scrollbars=no, resizable=yes, copyhistory=no, '
                + 'width=' + w + ', height=' + h + ', top=' + y + ', left=' + x);
popup.postMessage("The user is 'bob' and the password is 'secret'",
                  "*");
                  },500);

Сценарий на моей всплывающей html-странице:

function receiveMessage(event)
{
    alert("OK popup");
    console.log("djedjeidjeidjiejdie");
}
window.addEventListener("message", receiveMessage, false);

Поэтому для меня результатом должно быть окно предупреждения, которое возникает при открытии всплывающего окна. Это относится к firefox, но не к IE11. Не понимаю, почему.


person JPG    schedule 26.03.2019    source источник
comment
Что, если вы подождете, пока ваше всплывающее окно загрузится? popup.onload = function() { popup.postMessage(...   -  person Kaiido    schedule 26.03.2019


Ответы (1)


Попробуйте сделать тест с кодом ниже. Он работает с IE 11.

Код главной страницы:

<html>
<head>
    <title>Page Title</title>
    <script>
    //create popup window
var domain = 'http://example.com';
var myPopup = window.open(domain + '/HTML/popup_page.html','myWindow');

//periodical message sender
setInterval(function(){
    var message = 'Hello!  The time is: ' + (new Date().getTime());
    console.log('blog.local:  sending message:  ' + message);
    myPopup.postMessage(message,domain); //send the message and target URI
},6000);

//listen to holla back
window.addEventListener('message',function(event) {
    if(event.origin !== 'http://example.com') return;
    console.log('received response:  ',event.data);
},false);
    </script>
</head>
<body>

<h1>Main page</h1>

</body>
</html>

Код всплывающей страницы:

<!Doctype html>
<html>
<head>
<script>
window.addEventListener('message',function(event) {
    if (event.origin !== 'http://example.com') return;
    alert("OK popup");
    console.log('message received:  ' + event.data,event);
    event.source.postMessage('holla back youngin!',event.origin);
},false);
</script>
</head>
<body>
<h1>popup_page</h1>
</body>
</html>

Вывод в IE:

введите здесь описание изображения

введите здесь описание изображения

Обратите внимание, что вы также получите предупреждение() во время запуска кода.

Справка:

HTML5 API window.postMessage

person Deepak-MSFT    schedule 27.03.2019
comment
Это не сработало, потому что я использую путь к статическому файлу в браузере: C://..../main.html. Если я вызываю страницу через сервер 'main.html, она работает в IE 11 - person JPG; 27.03.2019