【问题标题】:Is there a javascript event when items are added to or removed from the DOM?将项目添加到 DOM 或从 DOM 中删除时是否存在 javascript 事件?
【发布时间】:2010-10-04 06:14:09
【问题描述】:

我正在尝试构建一个 Chrome 浏览器扩展程序,它应该会增强 twitter 网站在 Google Chrome 中的行为方式。我想标记加载新推文时下移的顶部推文,然后滚动到它。

通过使用.live() 钩住mousedown 事件,我能够在点击之前获取顶部推文。之后,我必须等到推文加载完毕,然后再向下滚动到上一条推文。我现在有一个 setTimeout() 的 hack,这对我有用,但我想要一个更好的解决方案。

可能的解决方案:

  • 以某种方式挂钩在元素加载到 div 时触发的事件
  • 挂钩一个在元素从 DOM 中移除时触发的事件

【问题讨论】:

    标签: javascript jquery twitter


    【解决方案1】:

    由于您的目标是 Google Chrome,因此您可以使用 DOM Level 2 Mutation Events,具体来说:

    你可以使用addEventListener绑定它们:

    someElement.addEventListener('DOMNodeInserted', eventHandlerFunction, false);
    

    或者由于您使用的是 jQuery,使用 bind 方法:

    $(selector).bind('DOMNodeInserted', function () { 
      //..
    });​
    

    注意不要在这些事件中修改受影响的 DOM,因为您可能会陷入无限的事件递归,例如,如果您在 DOMNodeInserted 事件中插入一个元素,它将再次触发。

    【讨论】:

      猜你喜欢
      • 2018-10-21
      • 2012-12-13
      • 2016-06-14
      • 1970-01-01
      • 2012-01-22
      • 2011-03-01
      • 1970-01-01
      • 2023-03-08
      • 1970-01-01
      相关资源
      最近更新 更多