window.addEventListener ("message" ... не работает с IE11 - PullRequest
0 голосов
/ 26 марта 2019

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

Я уже пытаюсь дождаться окна или хитрости, чтобы заменить eventListener на setInterval, но я не могу получить доступ к данным события в этом случае. И я должен проверить все темы, которые похожи на мой вопрос. Поэтому я просто попробую небольшой и простой пример, чтобы убедиться, что addEventListener 'message' работает с 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. Не понимаю почему.

1 Ответ

0 голосов
/ 27 марта 2019

Попробуйте сделать тест с кодом ниже.Работает с 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:

enter image description here

enter image description here

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

Ссылка:

API окна HTML.postMessage

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...