javascript - DOM 监听器的实现

标签 javascript dom google-chrome-extension event-listener dom3

我以为没有 DOM 监听器,所以我实现了自己的“重”监听器:

function CvHelper(stackApi) {
  var that = this;

  // check if room is finished loading
  this.init = function() {
    if ($('#loading').length) {
      setTimeout(that.init, 1000);
    } else {
      console.log('Chatroom finished loading');

      that.postListener();
    }
  }
}

(function() {
  var stackApi = new StackApi();
  var cvHelper = new CvHelper(stackApi);
  cvHelper.init();
})();

我认为这很糟糕。所以我在这里进行了搜索,然后弹出了this question。然而 last comment on the accepted question 声明它已被弃用。

$("#someDiv").bind("DOMSubtreeModified", function() {
  alert("tree changed");
});

w3.org/TR/DOM-Level-3-Events/#event-type-DOMSubtreeModified says this event is deprecated, what would we use instead?

有替代品吗?
附:它只需在 Chrome 上运行,因为它是 Chrome 扩展。

最佳答案

Mutation Event 由于性能问题目前已被弃用。因此,请使用 Mutation Observer 。我在我的一个项目中使用 Mutation Observer 做了 DOM 更改监听器,效果非常好!为了进一步实现,这些链接将为您提供帮助:

  1. http://gabrieleromanato.name/jquery-detecting-new-elements-with-the-mutationobserver-object/
  2. https://github.com/kapetan/jquery-observe
  3. Is there a JavaScript/jQuery DOM change listener?

关于javascript - DOM 监听器的实现,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9588979/

相关文章:

javascript - onclick 随机 div 背景图像

javascript - 我知道在 DOM 中存储数据不好,但为什么呢?

javascript - 如果没有观察到状态,虚拟 DOM 实现与 createDocumentFragment() 有何不同?

javascript - 浏览器具有不同脚本和链接标记位置的不同呈现行为

javascript - 从 DOM 中删除元素时,不会调用 $destroy

google-chrome-extension - 无法识别的 list key 'externally_connectable'

php - 如何创建录音WebApp?

javascript - 主页(网格)上的缩略图现在显得模糊。如何纠正?

css - 如何在 Firefox WebExtension 上使用@font-face

javascript - 与内容脚本的所有实例对话