Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/451.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 如何使用MutationObserver获取导致DOM突变的函数?_Javascript_Mutation Observers - Fatal编程技术网

Javascript 如何使用MutationObserver获取导致DOM突变的函数?

Javascript 如何使用MutationObserver获取导致DOM突变的函数?,javascript,mutation-observers,Javascript,Mutation Observers,我目前正试图找出哪个函数使用MutationObserver修改了DOM。不幸的是,以下代码段不起作用(堆栈跟踪似乎为空) 然后是一些DOM变异: function addSomeElement() { targetNode.appendChild(document.createElement('span')); } addSomeElement(); 有没有办法输出执行实际变异调用的函数(在本例中是appendChild)?您不能 MutationObserver返回只描述更改本身的Mu

我目前正试图找出哪个函数使用
MutationObserver
修改了DOM。不幸的是,以下代码段不起作用(堆栈跟踪似乎为空)

然后是一些DOM变异:

function addSomeElement() {
  targetNode.appendChild(document.createElement('span'));
}
addSomeElement();
有没有办法输出执行实际变异调用的函数(在本例中是
appendChild
)?

您不能

MutationObserver
返回只描述更改本身的
MutationRecord

它没有提供关于这些更改是如何影响的信息。

使用DOM断点(应该在Chrome和Firefox中工作)

开发者工具
->检查员
->右键单击要监视的元素
->断开:子树修改

当所选节点的子元素被更改时,浏览器将中断JavaScript的责任部分


假设您想实现自动化,您可以钩住所有或大部分节点突变原型方法,如appendChild,然后分析
new Error().stack
或简单地调用console.trace()@wOxxOm谢谢,这是个好主意!我要试试。谢谢!你知道还有其他选择吗?没有,但是请检查上面的@Andreas答案。谢谢!您是否碰巧知道有什么方法可以向这样的断点添加条件?您只能选择受监视的元素和修改类型(子树、属性)。其他事情是不可能的。
function addSomeElement() {
  targetNode.appendChild(document.createElement('span'));
}
addSomeElement();