2012-02-27 45 views
31

可能重复:
Detect changes in the DOM有没有“DOM变化”事件?

我需要设置一个事件处理程序,只要东西被追加/变更/对DOM删除这应该解雇。 This answer在我的情况下不起作用。 DOM可以被第三方开发者修改,并且在每次DOM更改时,我们都需要运行我们的脚本来验证代码。输入/文本/选择更改不应触发事件。

我们做不是针对所有浏览器。只要它适用于Webkit(Chrome,Safari),就足够了。

任何想法?

+6

没有人有链接的问题,这是完全相同的副本?我从谷歌来到这里。 – travis 2012-04-16 18:05:39

+5

@travis:不完全重复,但关闭:http://stackoverflow.com/questions/3219758/detect-changes-in-the-dom – Sherzod 2012-04-16 18:09:32

+2

@travis:我实际上找到了适合我的情况的答案:使用'DOMSubtreeModified'事件,但您需要检查浏览器支持。 Webkit可以正常工作。 – Sherzod 2012-04-16 18:11:48

回答

3

我不认为所有浏览器都有这样的事件。我会随着一个自定义事件,并在我操纵dom时触发它。

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

//Trigger the domChanged event 
$(document).trigger('domChanged'); 
+16

问题状态dom由第三方管理。所以这是行不通的。 – Myster 2012-10-09 08:53:17

+1

'domChanged'应该是一个在事件模块中定义的常量。例如,'export const domInjected ='myDOMInjected';'(ES6)你可能也想小心使用可能已经存在的东西,比如DOMNodeInserted – 2016-08-17 12:26:56