我正在尝试使用postMessage()
将数据发送到从父窗口生成的新窗口。 postMessage()
在chrome / firefox中工作得很好,但是使用Internet Explorer时,我的addEventListener
似乎很窒息,并且没有数据被发送到新页面。
我理解,对于IE,您应该使用我已实现的attachEvent
,但子页面支持addEventListener
,只是父页面在引用子项时不会。
父:
var newTab = window.open('community_PrinterFriendlyEligibility');
if (newTab.addEventListener) {
console.log('add1');
newTab.addEventListener('load', function() {
console.log('add2');
newTab.postMessage(data,'*');
});
} else if (newTab.attachEvent) {
console.log('attach1');
newTab.attachEvent('load', function() {
console.log('attach2');
newTab.postMessage(data,'*');
});
}
子:
if (window.addEventListener) {
console.log('add');
window.addEventListener('message', function(event) {
//process chrome
}, false);
} else if (window.attachEvent) {
console.log('attach');
window.attachEvent('message', function(event) {
//process IE
});
}
在IE中调试:
Parent Window: attach1 child Window: add
在Chrome中调试:
Parent Window: add1 add2 child Window: add
因此在IE中,子窗口的父引用没有addEventListener
,但子窗口接受addEventListener
答案 0 :(得分:0)
在IE11中不需要它:Source
刚刚在IE11中对此进行了测试,可以确认它使用了addEventlistener。
您是否在父页面中模拟IE8?这将使用附件。
新窗口将恢复为默认值(Edge),这将使用add。