window.addEventListener(“ message” ...不适用于IE11

时间:2019-03-26 07:52:03

标签: javascript internet-explorer-11 addeventlistener

我正在打开一个弹出窗口,此窗口向启动器发送了一个postMessage。 我已经在“消息”的主窗口中添加了一个ListenerEvent,但是在IE 11中从未调用过此监听器,它与firefox兼容。

我已经尝试等待窗口,或者用setInterval替换eventListener的技巧,但是在这种情况下,我无法访问事件的数据。我已经检查了所有与我的问题相似的线程。 因此,我只是尝试一个简单的示例来检查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 :(得分:0)

尝试使用下面的代码进行测试。它正在与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

请注意,您在运行代码时也会收到alert()。

参考:

HTML5’s window.postMessage API