EventTarget事件:scroll

2019-01-25 16:45 更新

EventTarget事件 - scroll

滾動(dòng)文檔視圖或元素時(shí)會(huì)觸發(fā)scroll事件。

基本信息

接口UIEvent
是否冒泡不在元素上,而是在文檔上觸發(fā)時(shí)向默認(rèn)視圖冒泡
是否可取消沒(méi)有
目標(biāo)DefaultView Document,,Element
默認(rèn)操作沒(méi)有

屬性

屬性類型描述
target(只讀)EventTarget事件目標(biāo)(DOM樹(shù)中最頂層的目標(biāo))。
type(只讀)DOMString事件的類型。
bubbles(只讀)Boolean事件是否正常冒泡。
cancelable(只讀)Boolean事件是否可以取消。
view(只讀)WindowProxyDocument.defaultViewwindow文件)
detail(只讀)longfloat0。

示例

滾動(dòng)事件限制

由于scroll事件可以以高速率觸發(fā),因此事件處理程序不應(yīng)執(zhí)行計(jì)算量大的操作,例如DOM修改。相反,建議使用requestAnimationFrame(),setTimeout()或CustomEvent來(lái)限制事件,如下所示。

但請(qǐng)注意,輸入事件和動(dòng)畫幀以大約相同的速率觸發(fā),因此下面的優(yōu)化通常是不必要的。此示例優(yōu)化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;
  }
});

規(guī)范

  • DOM L3
  • CSSOM視圖

瀏覽器兼容性

iOS UIWebView 

在iOS UIWebViews中,滾動(dòng)時(shí)不會(huì)觸發(fā)scroll事件;它們只在滾動(dòng)完成后才會(huì)被觸發(fā)。請(qǐng)參閱Bootstrap問(wèn)題#16202。Safari和WKWebViews不受此錯(cuò)誤的影響。

以上內(nèi)容是否對(duì)您有幫助:
在線筆記
App下載
App下載

掃描二維碼

下載編程獅App

公眾號(hào)
微信公眾號(hào)

編程獅公眾號(hào)