是否有任何“关于 DOM 更改”事件? [复制]

Posted

技术标签:

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

可能重复:Detect changes in the DOM

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

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

有什么想法吗?

【问题讨论】:

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

以上是关于是否有任何“关于 DOM 更改”事件? [复制]的主要内容,如果未能解决你的问题,请参考以下文章

如何为引导菜单启用悬停事件? [复制]

是否有任何使用 @HostListener 来改变方向的窗口事件,就像我们有 @HostListener("window:scroll", ['$event']) 进行滚动一样?

如何在 JavaScript 中复制指针事件的行为:无

如何以编程方式生成按键事件? [复制]

WPF/XAML:使用相同事件的多个控件 - 有没有更简单的方法?

如何删除绑定到单击事件的任何 jQuery 操作? [复制]