是否有任何“关于 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']) 进行滚动一样?