window.opener.document上的MutationObserver无法正常工作

时间:2015-05-07 15:54:34

标签: javascript internet-explorer-11 mutation-observers

我在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。

错误似乎来自我在另一个窗口观察文档的事实。如果我观察当前窗口的文档,那很好。我无法在任何地方找到这种行为。

有没有办法让这项工作成功并记录下这个限制?

1 个答案:

答案 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对象也能如此。