【问题标题】:disable dom changed event in Javascript?在Javascript中禁用dom更改事件?
【发布时间】: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/…)

标签: javascript jquery events dom


【解决方案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);
});

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2013-11-05
    • 1970-01-01
    • 2013-12-21
    • 2023-03-22
    • 1970-01-01
    • 2023-04-06
    • 2022-11-23
    相关资源
    最近更新 更多