文档:scrollend 事件

可用性有限

此特性不是基线特性,因为它在一些最广泛使用的浏览器中不起作用。

scrollend 事件在文档视图完成滚动后触发。当滚动位置不再有待处理的更新,并且用户已完成其手势时,滚动即被视为完成。

滚动位置更新包括平滑或即时鼠标滚轮滚动、键盘滚动、滚动捕捉事件或其他导致滚动位置更新的 API 和手势。用户手势(如触摸平移或触控板滚动)要等到指针或按键释放后才算完成。如果滚动位置没有改变,则不会触发 scrollend 事件。

有关检测元素内滚动何时完成的信息,请参阅 Elementscrollend 事件。

语法

在诸如 addEventListener() 之类的方法中使用事件名称,或设置事件处理程序属性。

js
addEventListener("scrollend", (event) => { })

onscrollend = (event) => { }

事件类型

一个通用的 Event

示例

使用文档 scrollend 和事件监听器

以下示例展示了如何使用 scrollend 事件和事件监听器来检测用户何时停止滚动文档。在此示例中,嵌入的 iframe 中包含比 iframe 本身更长更宽的内容,因此可以在 iframe 中向两个方向滚动。当用户停止滚动时,将触发 scrollend 事件。

html
<div class="box-wrapper">
  <div class="box"></div>
  <div class="box"></div>
  <div class="box"></div>
  <div class="box"></div>
</div>
<p id="output">Waiting on scroll events...</p>
js
const output = document.querySelector("p#output");

document.addEventListener("scroll", (event) => {
  output.textContent = "Document scroll event fired!";
});

document.addEventListener("scrollend", (event) => {
  output.textContent = "Document scrollend event fired!";
});

使用 onscrollend 事件处理程序属性

以下示例展示了如何使用 scrollend 事件处理程序属性来检测用户何时停止滚动文档。在此示例中,嵌入的 iframe 中包含比 iframe 本身更长更宽的内容,因此可以在 iframe 中向两个方向滚动。这建立在第一个示例的基础上,但使用 document.onscrollend 而不是事件监听器。

html
<div class="box-wrapper">
  <div class="box"></div>
  <div class="box"></div>
  <div class="box"></div>
  <div class="box"></div>
</div>
<p id="output">Waiting on scroll events...</p>
js
document.onscroll = (event) => {
  output.textContent = "Document scroll event fired!";
};

document.onscrollend = (event) => {
  output.textContent = "Document scrollend event fired!";
};

规范

规范
CSSOM 视图模块
# eventdef-document-scrollend
HTML
# handler-onscrollend

浏览器兼容性

另见