日韩无码专区无码一级三级片|91人人爱网站中日韩无码电影|厨房大战丰满熟妇|AV高清无码在线免费观看|另类AV日韩少妇熟女|中文日本大黄一级黄色片|色情在线视频免费|亚洲成人特黄a片|黄片wwwav色图欧美|欧亚乱色一区二区三区

RELATEED CONSULTING
相關咨詢
選擇下列產品馬上在線溝通
服務時間:8:30-17:00
你可能遇到了下面的問題
關閉右側工具欄

新聞中心

這里有您想知道的互聯網營銷解決方案
Scrollend:超實用的全新JavaScript事件

大家好,我是 CUGGZ。

創(chuàng)新互聯是一家專注于網站建設、做網站與策劃設計,佳縣網站建設哪家好?創(chuàng)新互聯做網站,專注于網站建設十多年,網設計領域的專業(yè)建站公司;建站業(yè)務涵蓋:佳縣等地區(qū)。佳縣做網站價格咨詢:18982081108

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

概述

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

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

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

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

document.onscrollend = event {…}

可以在 Codepen 查看示例:https://codepen.io/web-dot-dev/pen/rNrJRKg,當滾動停止時會有提示。核心代碼如下:

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

使用

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

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

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

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

這個事件花了很長時間才出現在 Web 平臺上的一個原因就是有許多小細節(jié)需要進行規(guī)范。最復雜的就是視覺視口與文檔的滾動結束細節(jié)。對于放大的網頁,在此縮放狀態(tài)下,可以四處滾動,但不一定是在滾動文檔。不過,即使是這個視覺視口用戶驅動的滾動交互也會在完成后發(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 版本也將支持該事件。

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

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

這樣就能在可用時漸進增強 scrollend 事件。當然也可以使用 polyfill:https://github.com/argyleink/scrollyfills

首先需要在終端中安裝 npm 包:

npm i -D scrollyfills

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

import {scrollend} from 'scrollyfills';

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

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

參考:https://developer.chrome.com/blog/scrollend-a-new-javascript-event/


分享題目:Scrollend:超實用的全新JavaScript事件
本文鏈接:http://www.5511xx.com/article/djhpppc.html