0

我在一个由 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 异常。

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

有什么方法可以完成这项工作吗?这个限制是否记录在案?

4

1 回答 1

0

我认为如果你使用窗口的 Mutation 观察者它会起作用:

var observer = new window.opener.MutationObserver(function (mutations, observer) {/*..*/});
observer.observe(window.opener.document, {
    attributes: true,
});

听说它可以在 Chrome 中运行,我感到很惊讶。您通常不能在另一个窗口中互换使用一个窗口的资源。例如,如果您从另一个窗口导入对象(例如:),则 instanceof 检查之类的操作将失败window.Array !== window.opener.Array。我希望 DOM 对象也是如此。

于 2015-05-07T15:58:38.360 回答