欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

超實用的全新JavaScript事件Scrollend實例詳解

 更新時間:2023年01月29日 14:49:54   作者:CUGGZ  
這篇文章主要為大家介紹了超實用的全新JavaScript事件Scrollend實例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪

概述

在開發(fā)中,可能會遇到當(dāng)頁面滾動停止之后執(zhí)行某些操作的需求。在 scrollend 事件之前,并沒有可靠的方法來檢測頁面滾動是否完成。這意味著事件會延遲觸發(fā),或者當(dāng)用戶的手指仍在屏幕上時觸發(fā)。這種不可靠性導(dǎo)致了錯誤和用戶體驗不佳。

以前可能會使用定時器來檢測滾動停止

document.onscroll = event => {
  clearTimeout(window.scrollEndTimer)
  window.scrollEndTimer = setTimeout(callback, 100)
}

這個 setTimeout() 可以知道滾動是否停止了 100 毫秒。這使它更像是滾動已暫停事件,而不是滾動已結(jié)束事件。

有了 scrollend 事件,瀏覽器就會幫我們完成滾動停止的監(jiān)聽:

document.onscrollend = event => {…}

可以在 Codepen 查看示例:codepen.io/web-dot-dev…,當(dāng)滾動停止時會有提示。核心代碼如下:

document.onscrollend = event => {
  Toast('scroll end')
}

使用

scrollend 事件會在以下情況被觸發(fā):

  • 用戶的觸摸已被釋放;
  • 用戶的指針已釋放滾動條;
  • 用戶的按鍵已被釋放;
  • 滾動到片段已完成;
  • 滾動捕捉已完成;
  • scrollTo()已完成;
  • 用戶已滾動視覺視口。

scrollend 事件在以下情況不會觸發(fā):

  • 用戶的手勢沒有導(dǎo)致任何滾動位置變化;
  • scrollTo() 沒有產(chǎn)生任何移動。

這個事件花了很長時間才出現(xiàn)在 Web 平臺上的一個原因就是有許多小細(xì)節(jié)需要進行規(guī)范。最復(fù)雜的就是視覺視口與文檔的滾動結(jié)束細(xì)節(jié)。對于放大的網(wǎng)頁,在此縮放狀態(tài)下,可以四處滾動,但不一定是在滾動文檔。不過,即使是這個視覺視口用戶驅(qū)動的滾動交互也會在完成后發(fā)出 scrollend 事件。

與其他滾動事件一樣,可以通過多種方式注冊偵 聽 器:

addEventListener("scrollend", (event) => {
  // scroll ended
});
aScrollingElement.addEventListener("scrollend", (event) => {
  // scroll ended
});

也可以使用事件屬性:

document.onscrollend = (event) => {
  // scroll ended
};
aScrollingElement.onscrollend = (event) => {
  // scroll ended
};

瀏覽器支持

目前僅 Firefox 109 版本支持 scrollend 事件。不久的將來,Chrome 111 版本也將支持該事件。

如果現(xiàn)在想要使用這個事件,可以在開始時檢查支持情況,如果不支持該事件就繼續(xù)使用當(dāng)前的滾動結(jié)束策略(如果有的話):

if ('onscrollend' in window) {
  document.onscrollend = callback
}
else {
  document.onscroll = event => {
    clearTimeout(window.scrollEndTimer)
    window.scrollEndTimer = setTimeout(callback, 100)
  }
}

這樣就能在可用時漸進增強 scrollend 事件。當(dāng)然也可以使用 polyfill:github.com/argyleink/s…

首先在終端中安裝npm包:

npm i -D scrollyfills

然后在要的地方使用 scrollend 事件:

import {scrollend} from 'scrollyfills';
someElementThatScrolls.addEventListener('scrollend', event => {
  console.log('scroll has ended');
});

polyfill 將漸進增強以使用瀏覽器內(nèi)置的 scrollend 事件(如果可用)。 如果它不可用,腳本會監(jiān)視指針事件并滾動以對它可能結(jié)束的事件進行最佳評估。

參考:developer.chrome.com/blog/scroll…

以上就是超實用的全新JavaScript事件Scrollend實例詳解的詳細(xì)內(nèi)容,更多關(guān)于JavaScript Scrollend事件的資料請關(guān)注腳本之家其它相關(guān)文章!

相關(guān)文章

  • JavaScript實現(xiàn)郵箱后綴提示功能的示例代碼

    JavaScript實現(xiàn)郵箱后綴提示功能的示例代碼

    這篇文章主要介紹了JavaScript實現(xiàn)郵箱后綴提示功能的示例代碼,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2018-12-12
  • Input 特殊事件onpopertychange和oninput

    Input 特殊事件onpopertychange和oninput

    onpopertychange和oninput的區(qū)別。
    2009-06-06
  • JS定時器不可靠的原因及解決方案

    JS定時器不可靠的原因及解決方案

    JavaScript中所有的任務(wù)分為同步任務(wù)與異步任務(wù),同步任務(wù),顧名思義就是立即執(zhí)行的任務(wù),它一般是直接進入到主線程中執(zhí)行,這篇文章主要介紹了JS定時器不可靠的原因及解決方案,需要的朋友可以參考下
    2022-01-01
  • 在js中做數(shù)字字符串補0(js補零)

    在js中做數(shù)字字符串補0(js補零)

    這篇文章主要介紹了在js中做數(shù)字字符串補0(js補零),需要的朋友可以參考下
    2017-03-03
  • JavaScript 預(yù)解析的4種實現(xiàn)方法解析

    JavaScript 預(yù)解析的4種實現(xiàn)方法解析

    這篇文章主要介紹了JavaScript 預(yù)解析的4種實現(xiàn)方法解析,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友可以參考下
    2019-09-09
  • 微信小程序之購物車功能

    微信小程序之購物車功能

    這篇文章主要為大家詳細(xì)介紹了微信小程序之購物車功能的相關(guān)資料,文中示例代碼介紹的非常詳細(xì),具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2017-05-05
  • js 字符串操作函數(shù)

    js 字符串操作函數(shù)

    js 字符串操作函數(shù)小結(jié)。
    2009-07-07
  • Bootstrap CSS布局之表格

    Bootstrap CSS布局之表格

    這篇文章主要為大家詳細(xì)介紹了Bootstrap CSS布局之表格的相關(guān)資料,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2016-12-12
  • JavaScript實現(xiàn)生成動態(tài)表格和動態(tài)效果的方法詳解

    JavaScript實現(xiàn)生成動態(tài)表格和動態(tài)效果的方法詳解

    這篇文章主要介紹了如何通過JavaScript語言實現(xiàn)動圖表格的生成以及動態(tài)效果的實現(xiàn),文中的示例代碼講解詳細(xì),感興趣的可以了解一下
    2022-02-02
  • 用js判斷輸入是否為中文的函數(shù)

    用js判斷輸入是否為中文的函數(shù)

    本篇文章主要是對js判斷輸入是否為中文的函數(shù)進行了介紹,需要的朋友可以過來參考下,希望對大家有所幫助
    2014-03-03

最新評論