--- title: scroll slug: Web/API/Document/scroll_event translation_of: Web/API/Document/scroll_event ---
當文件的可視區或元素被滾動(scroll),scroll事件會被觸發
| Property | Type | Description |
|---|---|---|
target {{readonlyInline}} |
EventTarget |
The event target (the topmost target in the DOM tree). |
type {{readonlyInline}} |
DOMString |
The type of event. |
bubbles {{readonlyInline}} |
Boolean |
Whether the event normally bubbles or not. |
cancelable {{readonlyInline}} |
Boolean |
Whether the event is cancellable or not. |
view {{readonlyInline}} |
WindowProxy |
document.defaultView (window of the document) |
detail {{readonlyInline}} |
long (float) |
0. |
因為 scroll 事件是高頻觸發,這樣的事件處理程式不該進行運算成本高的程式,像是DOM的修改。所以,建議使用 requestAnimationFrame, setTimeout 或 customEvent 如下所示
// Reference: http://www.html5rocks.com/en/tutorials/speed/animations/
var last_known_scroll_position = 0;
var ticking = false;
function doSomething(scroll_pos) {
// do something with the scroll position
}
window.addEventListener('scroll', function(e) {
last_known_scroll_position = window.scrollY;
if (!ticking) {
window.requestAnimationFrame(function() {
doSomething(last_known_scroll_position);
ticking = false;
});
}
ticking = true;
});
關於resize事件的更多類似例子。
在iOS UIWebViews中,滾動捲軸時 scroll 事件不會觸發;它們要等到滾動完成時才被觸發。請參閱Bootstrap issue #16202。 Safari 和 WKWebViews 不受此bug的影響。