Javascript:如何检查是否已将某些内容添加到DOM?

时间:2012-06-18 13:42:42

标签: javascript ajax dom loading

看看this site。向下滚动时,它会自动加载更多页面。假设我有一个在document.load上运行的事件。当你向下滚动并有更多的东西进入视野时,有没有办法让它再次这样做?

值得一提的是,我正在尝试设计一种方法来捕获所有这样的实例,而不仅仅是我提到的特定网站,当它进行无限滚动时可能会有一些东西可以锁定。

2 个答案:

答案 0 :(得分:1)

已弃用的DOM3 Mutation EventsDOMSubtreeModified一样,只要发生特定的突变事件就会触发。出于性能和兼容性的原因,MDN强烈反对使用它们,但它们确实存在。我也相信他们不会提供有关突变发生的信息或任何类型的比较之前/之后的信息。

DOM4 Mutation Observers的W3C草案,目前可能会在某些浏览器中实现。我知道它至少在Chrome中实现,使用WebKitMutationObserver就像这样:

var observer = new WebKitMutationObserver(function(mutations, observer) {
    // fired when a mutation occurs
    console.log(mutations, observer);
    // ...
});

// define what element should be observed
// and what types of mutations trigger the callback
observer.observe(document, {
  subtree: true,
  attributes: true
  //...
});

草稿中有mutation properties的完整列表(向下滚动到绿色框)。

答案 1 :(得分:0)

您所描述的行为通常被称为“infinite scrolling”。

编辑:我上面的回答并没有真正回答你的问题。

我能想到的最接近真正通用的处理方法,即使你的代码不是向DOM添加元素,也是使用DOM Level 3 API Mutation events,但它们现已弃用不应该使用。

DOM级别4中的mutation observers提案正在进行中,但这些尚未标准化。但是,take a look at this article用于示例实现。