0
我正在嘗試使用postMessage()
將數據發送到從父窗口生成的新窗口。 postMessage()
在Chrome/Firefox中工作正常,但與Internet Explorer似乎在我的addEventListener
窒息和沒有數據被髮送到新的頁面。window.postMessage Internet Explorer 11支持
據我所知,對於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
調試在鉻:
Parent Window: add1 add2 child Window: add
所以在IE中,父參考子窗口沒有addEventListener
但子窗口接受addEventListener
產卵子窗口只允許我使用attachEvent。雖然addEventListener在im頁面上工作。我沒有使用模擬器 – Programatic
通過控制檯進行了一些測試。 IE11.0.9600.17501 - Edge modus:window.addEventlistener是一個函數,而window.attachEvent是未定義的。在IE8仿真中,這是另一種方式。對於newTab - 它取決於在目標窗口中設置的模式,這是有道理的。邊緣模式:addEventListener是一個函數,attachEvent未定義。 IE8仿真:addEventListener未定義,attachEvent是一個對象。 – yezzz
還有一個問題:頁面中是否有強制IE使用傳統模式的元標記?請參閱:https://msdn.microsoft.com/nl-nl/library/jj676915(v=vs.85).aspx – yezzz