我想要一個滾動事件監聽器,當用戶第一次滾動頁面時觸發,但隨後在一段時間後停止觸發,並允許用戶正常滾動。如何在第一次觸發後停止滾動事件監聽器?
下面是我當前如何得到它的工作:
var scrollcount = 0
// Scroll event listener
window.addEventListener("scroll", function() {
setTimeout(function() {
scrollcount ++
if (scrollcount < 40) {
window.scrollTo(0, 0);
}
}, 1200);
});
的scrollcount
變量增量滾動一起,和40大約是多少需要爲一個滾動在我的筆記本電腦的觸控板。如果計數器低於40,那麼一旦用戶放開滾輪,頁面就會滾動回頁面的頂部,如果超過了40,則不會。
我意識到這是一個非常糟糕的方式來解決這個問題,所以我想知道是否有人有更可靠的方法來做到這一點。一旦setTimeout完成其延遲,我試圖讓removeEventListener方法關閉事件監聽器,但是我無法將它定位到窗口。我認爲removeEventListener會工作,如果滾動事件監聽器被分配到一個容器div,而不是窗口,但是當我嘗試滾動事件監聽器不會工作在第一個地方。
我想避免jQuery或任何其他庫,如果我可以的話,但在這一點上,我會使用任何使它可靠工作的東西。
它非常的模樣[XY問題(http://meta.stackexchange.com/questions/66377/what-is-the- XY-問題)。你能解釋你原來的問題是什麼嗎?當用戶嘗試第一次滾動頁面時,是否嘗試滾動到頁面的頂部? – TeWu
是的。不過,我不希望它立即觸發。用戶的第一個滾動觸發一些動畫,一旦這些動畫完成,我希望窗口跳回到頁面的頂部,之後我希望用戶能夠自由滾動。我的問題是我可以讓它跳到頁面的頂部,'scrollcount'阻止它回到頂端,然後讓用戶滾動,但是這個解決方案對我的屏幕/觸控板非常特別,以至於它贏了不適用於平板電腦/手機/其他電腦。我的問題是:肯定有更好的解決方案? – Evan