codecamp

EventTarget事件:scroll

EventTarget事件 - scroll

滚动文档视图或元素时会触发scroll事件。

基本信息

接口UIEvent
是否冒泡不在元素上,而是在文档上触发时向默认视图冒泡
是否可取消没有
目标DefaultView Document,,Element
默认操作没有

属性

属性类型描述
target(只读)EventTarget事件目标(DOM树中最顶层的目标)。
type(只读)DOMString事件的类型。
bubbles(只读)Boolean事件是否正常冒泡。
cancelable(只读)Boolean事件是否可以取消。
view(只读)WindowProxyDocument.defaultViewwindow文件)
detail(只读)longfloat0

示例

滚动事件限制

由于scroll事件可以以高速率触发,因此事件处理程序不应执行计算量大的操作,例如DOM修改。相反,建议使用requestAnimationFrame(),setTimeout()或CustomEvent来限制事件,如下所示。

但请注意,输入事件和动画帧以大约相同的速率触发,因此下面的优化通常是不必要的。此示例优化requestAnimationFrame的scroll事件。

// Reference: http://www.html5rocks.com/en/tutorials/speed/animations/

let last_known_scroll_position = 0;
let 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;
  }
});

规范

  • DOM L3
  • CSSOM视图

浏览器兼容性

iOS UIWebView 

在iOS UIWebViews中,滚动时不会触发scroll事件;它们只在滚动完成后才会被触发。请参阅Bootstrap问题#16202。Safari和WKWebViews不受此错误的影响。

EventTarget事件:resize
EventTarget事件:select
温馨提示
下载编程狮App,免费阅读超1000+编程语言教程
取消
确定
目录

Fetch API官方文档指南

Fetch API方法

WindowOrWorkerGlobalScope执行者:window

window属性

WindowOrWorkerGlobalScope执行者:WorkerGlobalScope

关闭

MIP.setData({ 'pageTheme' : getCookie('pageTheme') || {'day':true, 'night':false}, 'pageFontSize' : getCookie('pageFontSize') || 20 }); MIP.watch('pageTheme', function(newValue){ setCookie('pageTheme', JSON.stringify(newValue)) }); MIP.watch('pageFontSize', function(newValue){ setCookie('pageFontSize', newValue) }); function setCookie(name, value){ var days = 1; var exp = new Date(); exp.setTime(exp.getTime() + days*24*60*60*1000); document.cookie = name + '=' + value + ';expires=' + exp.toUTCString(); } function getCookie(name){ var reg = new RegExp('(^| )' + name + '=([^;]*)(;|$)'); return document.cookie.match(reg) ? JSON.parse(document.cookie.match(reg)[2]) : null; }