在Javascript中禁用dom更改事件?
Posted
技术标签:
【中文标题】在Javascript中禁用dom更改事件?【英文标题】:disable dom changed event in Javascript? 【发布时间】:2014-03-02 13:56:49 【问题描述】:我用
document.addEventListener("DOMSubtreeModified", function()
在文档的 DOM 发生变化时采取行动。
问题是:在该函数中,我自己修改了 DOM,但我不希望此更改调用 DOMSubtreeModified-event(导致我的代码一遍又一遍地运行)
有机会阻止吗?
【问题讨论】:
我会首先尝试解决导致您使用该事件的根本问题。 ?!?为什么你认为有问题? 我从未见过在使用事件委托或类似方法(例如 pub/sub)的地方使用该事件。 @OleAlbers 你应该在使用附加方法而不是像这样的通用事件时触发一个事件。 根据 MDN 关于突变事件:此功能已从 Web 中删除。尽管某些浏览器可能仍然支持它,但它正在被删除。不要在旧项目或新项目中使用它。使用它的页面或 Web 应用程序可能随时中断。 (developer.mozilla.org/en-US/docs/Web/Guide/Events/…) 【参考方案1】:我曾经使用此解决方案做过同样的事情:
function modifyDOM(obj)
obj._muteTrigger = true;
//HERE do your actual dom change
obj._muteTrigger = false;
document.addEventListener("DOMSubtreeModified", function()
if(this._muteTrigger) return;
//the other codes
modifyDOM(this);
);
【讨论】:
以上是关于在Javascript中禁用dom更改事件?的主要内容,如果未能解决你的问题,请参考以下文章
chrome扩展跟踪前端JavaScript,该JavaScript使用DOM/jQueryAPI在运行时操作html-DOM元素(例如,更改样式、附加事件侦听器)。