17

首先,这不是“如何创建突变观察者?” 发布,我已经看到了 API。

我想知道是否有人知道一种显示突变发生时间的“来源”的方法。这很可能是某种解决方法——我在 API 文档中看不到任何提及。

我试图找出一个元素在哪里被display设置stylenone.

我的代码如下所示:

var observer = new MutationObserver(function(mutations) {
    mutations.forEach(function (mutation) {
        if (mutation.attributeName === "style") {
            var extendedMutation = _.extend({}, mutation, {
                newValue: $(mutation.target).attr("style")
            });

            console.log(extendedMutation);
        }
      });
});

observer.observe(row.element[0], { attributes: true, attributeOldValue: true });

我有几个突变事件,它们看起来是这样的:

{
    addedNodes: NodeList[]

    attributeName: "style"

    attributeNamespace: null

    newValue: "display: none;"

    nextSibling: null

    oldValue: ""

    previousSibling: null

    removedNodes: NodeList[]

    target: li#d526d311-e6e0-4ef1-a3a1-f8686bbb468f.group

    type: "attributes"

}

我只是想知道它来自 JS 源代码的哪个位置!有任何想法吗?

请注意,我尝试了 ctrl+f,但无济于事。

调试器/异常输出(也尝试了 Chrome 的 WebkitMutationObserver,结果相同):

http://i.imgur.com/jYeqCPX.png

4

1 回答 1

12

我知道这个线程已经很老了,但是现在 Chrome 有一个工具可以跟踪异步调用,我想提一下。

我认为 Chrome 调用堆栈 Async 选项可以实现异步调用的回溯。此选项可以在开发者工具 -> 调用堆栈选项卡中找到。通过打开 Async 选项并在 MutationObserver 回调函数上放置断点,我们将能够看到完整的调用堆栈。

希望能帮助到你。

于 2015-07-15T10:45:14.370 回答