【问题标题】:MutationObserver on window.opener.document not workingwindow.opener.document 上的 MutationObserver 不起作用
【发布时间】:2015-07-18 07:42:50
【问题描述】:

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

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

有什么方法可以使这项工作正常进行吗?是否记录了此限制?

【问题讨论】:

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


    【解决方案1】:

    我认为如果你使用窗口的 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 对象也是如此。

    【讨论】:

    • 我遇到了与调用观察方法的问题中描述的相同的异常
    • 你从哪里得到这个错误?
    • 当我调用observer.observe,我得到NotFoundError
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2013-09-26
    • 2019-02-13
    • 2016-05-07
    • 1970-01-01
    • 2018-04-02
    • 2015-09-20
    相关资源
    最近更新 更多