我在IE11中工作
我有一个代码,可以打开一个新窗口,并在新窗口上为加载事件添加一个eventListener。
var newWindow = window.open(someURL, ..., ...);
newWindow.addEventListener('load', callback, true);
// when IE11 executes this line, it throws error "object doesn't support property or method".
当我将调试器打开到问题所在的行时,newWindow对象的方法列表中列出了addEventListener方法。
有人可以建议或解释IE11中行为的可能原因。
有些研究 -
我发现了一个问题,其中newWindow不允许您将appendChild与父窗口的元素一起使用。
appendChild not working with window.open in IE
相似的事情会成为问题吗?
最佳答案
我在最近的一个项目中遇到了这个问题。看来IE需要一点时间来正确初始化新窗口,并且新窗口对象在打开后还没有addEventListener
方法。只有IE才能做到;我无法在任何其他浏览器中观察到此行为。我还可以确认newWindow.onload
几乎没有用。
这是我的解决方法:
var newWindow = window.open();
// wait until addEventListener method is available to window
var windowInitialized = false;
while (windowInitialized === false) {
if (typeof newWindow.addEventListener === 'function') {
windowInitialized = true;
}
}
// from here on you can safely use newWindow.addEventListener