Javascript 破门而入;innerHTML";铬的变化

Javascript 破门而入;innerHTML";铬的变化,javascript,google-chrome-devtools,Javascript,Google Chrome Devtools,Chrome的开发者工具提供了在修改元素属性或DOM树时中断javascript代码执行的选项。(检查元件>右键单击元件标签>“断开…”) 但是,当元素的innerHTML被JavaScript更改时,我想跳转到代码中。激活所有“断开”选项都不行,所以我想知道是否有办法做到这一点。我建议尝试一下这个活动 根据Alexander的建议,您可以使用domsubtreemedited: $0.addEventListener('DOMSubtreeModified', function(){debug

Chrome的开发者工具提供了在修改元素属性或DOM树时中断javascript代码执行的选项。(检查元件>右键单击元件标签>“断开…”)
但是,当元素的innerHTML被JavaScript更改时,我想跳转到代码中。激活所有“断开”选项都不行,所以我想知道是否有办法做到这一点。

我建议尝试一下这个活动


根据Alexander的建议,您可以使用
domsubtreemedited

$0.addEventListener('DOMSubtreeModified', function(){debugger;});
(其中$0为已检查元素。)
然而,由于
domsubtreemedited
已被弃用,我还想抛出一个替代方案。不幸的是,这仅在内部HTML被实际的
innerHTML
属性更改时才起作用:

Object.defineProperty($0, 'innerHTML', {set:function(){debugger;}})
  • 文本节点是一个子节点
  • 若要更改文本,浏览器将删除旧的文本子节点
  • 子树修改是一个标志。当此标志打开时,您可以收听
    • 带子树的属性修改
    • 带子树的节点删除
  • 所以,你应该选择两个。节点删除和子树修改

    此外,您还可以直接使用API


    旧事件(
    domsubtreemedited
    DOMCharacterDataModified
    ,…)已弃用

    我发现了一个技巧,首先可以编辑dom html并附加一个html标记,
    foo
    ,然后在dom上设置一个子树中断。当dom更改时,它将触发中断。

    哦。。。聪明!这是否也适用于IE的最新版本?或者他们HtmleElement还没有从对象继承吗?我还不会在生产代码中使用它…@Protector one:…但我现在会使用它!它必须是“DOMCharacterDataModified”而不是“DomCharacterDataMofied”,才能正常工作。
    Object.defineProperty($0, 'innerHTML', {set:function(){debugger;}})