我正在打开一个弹出窗口,此窗口向启动器发送了一个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并非如此。不明白为什么。
答案 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中的输出:
请注意,您在运行代码时也会收到alert()。
参考: