【问题标题】:Is there any "on DOM change" event? [duplicate]是否有任何“关于 DOM 更改”事件? [复制]
【发布时间】:2012-03-17 06:35:56
【问题描述】:

可能重复:
Detect changes in the DOM

我需要设置一个事件处理程序,只要在 DOM 上附加/更改/删除某些内容,它就会触发。 This answer 在我的情况下不起作用。 DOM 可以由第三方开发人员修改,并且在每次 DOM 更改时,我们都需要运行我们的脚本来验证代码。该事件不应在输入/文本区域/选择更改时触发。

我们针对所有浏览器。只要能在 Webkit(Chrome、Safari)上运行就足够了。

有什么想法吗?

【问题讨论】:

  • 有没有人有这个问题的链接,这是一个完全重复的问题?我是从谷歌来到这里的。
  • @travis:不完全重复,但很接近:stackoverflow.com/questions/3219758/detect-changes-in-the-dom
  • @travis:我实际上找到了适合我的情况的答案:使用DOMSubtreeModified 事件,但您需要检查浏览器支持。 Webkit 可以很好地配合它。
  • 是的,我正在寻找至少可以回溯到 IE8 的东西。

标签: javascript jquery html dom


【解决方案1】:

DOM 突变事件(我相信并非所有浏览器都支持).. 见 http://en.wikipedia.org/wiki/DOM_events#Common.2FW3C_events

【讨论】:

    【解决方案2】:

    我认为所有浏览器都不会发生此类事件。我会使用自定义事件并在我操作 dom 时触发它。

    //Subscribe to domChanged event
    $(document).bind('domChanged', function(){
         alert('Dom changed');
    });
    
    //Trigger the domChanged event
    $(document).trigger('domChanged');
    

    【讨论】:

    • 问题状态 dom 被第 3 方操纵。所以这行不通。
    • domChanged 应该是在事件模块中定义的常量。例如,export const domInjected = 'myDOMInjected'; (ES6) 你可能还想小心使用在不久的将来可能已经存在的东西……比如 DOMNodeInserted
    猜你喜欢
    • 1970-01-01
    • 2011-01-20
    • 2019-12-18
    • 2015-07-05
    • 2015-09-20
    • 2012-02-02
    • 1970-01-01
    • 2023-03-28
    • 2017-12-14
    相关资源
    最近更新 更多