0

看看这个网站。当您向下滚动时,它会自动加载更多页面。假设我有一个在 document.load 上运行的事件。当您向下滚动并看到更多内容时,有没有办法让它再次这样做?

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

4

2 回答 2

1

有已弃用的DOM3 Mutation Events,例如DOMSubtreeModified,只要发生特定的突变事件就会触发。出于性能和兼容性的原因,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
  //...
});

草稿中有完整的突变属性列表(向下滚动到绿色框)。

于 2012-06-18T14:07:43.750 回答
0

您所描述的行为通常被称为“无限滚动”。

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

我能想到的最接近的一种真正通用的处理方式,即使不是您的代码向 DOM 添加元素,也是使用DOM Level 3 API Mutation events,但它们现在已被弃用,不应使用.

DOM 级别 4 中的突变观察者提案的工作正在进行中,但这些尚未标准化。但是,请查看本文以获取示例实现。

于 2012-06-18T13:45:03.510 回答