我在javascript打开的窗口中
window.open("/altitudeToolBox.aspx", "_altitudeToolBox", "location=no, menubar=no, status=no, titlebar=no, scrollbars=1, resizable=yes");
在这个新窗口中,我使用MutationObserver订阅了开启窗口上的更改。
MutationObserver = window.MutationObserver || window.WebKitMutationObserver;
if (MutationObserver) {
observer = new MutationObserver(function (mutations, observer) {
...
});
}
observer.observe(window.opener.document, {
attributes: true,
});
它在Chrome上运行正常,但在IE 11上没有,我得到一个异常,说明NotFoundError。
错误似乎来自我在另一个窗口观察文档的事实。如果我观察当前窗口的文档,那很好。我无法在任何地方找到这种行为。
有没有办法让这项工作成功并记录下这个限制?
答案 0 :(得分:0)
我认为如果你使用窗口的Mutation观察者它将会起作用:
var observer = new window.opener.MutationObserver(function (mutations, observer) {/*..*/});
observer.observe(window.opener.document, {
attributes: true,
});
我很惊讶地听说它适用于Chrome。您通常不能互相使用一个窗口的资源。例如,如果您从另一个窗口导入对象(例如:window.Array !== window.opener.Array
),则instanceof检查将失败。我希望DOM对象也能如此。