2016-10-27 78 views
0

我需要的時候作出滾動試圖執行一些功能,但沒有實際滾動happenned。例如,當頁面滾動到頂部並且用戶試圖向上滾動,或者當頁面滾動到可能的底部並且用戶試圖向下滾動時。如何捕捉零滾動?

有沒有辦法趕上那種卷軸?

onscroll事件沒有幫助

UPD:隨着人們建議,抓住所有滾動嘗試的唯一方法是觀看會影響滾動位置操作的所有事件。至於我能理解,也都以滾動方式:鼠標滾輪,按下鼠標滾輪,鍵盤(箭頭,數字鍵盤箭頭,空間,網頁上/下,HOME,END),觸摸。

其實,這讓我想問這樣一個問題「什麼方式來滾動存在嗎?」,我應該?

例如,我要趕下來零次滾動嘗試(是這樣表達的英文正確嗎?當一個頁面滾動至底部,但用戶試圖滾動下來,反正是happenned一個滾動的嘗試)。我用滾動事件來決定,如果用戶滾動至底部,並設置/取消finally_scrolled_to_the_bottom布爾標誌。

下一頁:

  1. 觸摸:如果設置了標誌,在觸摸監聽我應檢查方向,如果方向是「向下」,火我的功能,
  2. 鍵盤:相同,檢查(關鍵是DownArrow中文/ numdownarrow /空間/ PageDown鍵/結束& &標誌設置),如果是的話 - 火我的功能,
  3. 鼠標滾輪滾動:檢查(方向「向下」 & &標誌設置) ,如果是 - 防火功能,
  4. 鼠標輪壓機:???

難道這一切滾動的可能途徑?如何處理用鼠標滾輪做的滾動?

+0

您是否需要檢測任何可能的滾動方式?或者你只是對鼠標輪感興趣?你是否在意上/下箭頭試圖滾動? –

+0

@EdmundReed,是的,這是關鍵:捕捉所有滾動企圖,不管方式 - 鼠標,鍵盤等。 – lucifer63

回答

1

您可能正在尋找wheel事件。根據您的設備,滾動嘗試也可以通過swipingarrow keys或其他任何東西進行。

我要趕下來零次滾動嘗試

我不認爲你真的可以。我可以想象的一個好的解決方法是防止內容一直向下滾動到底部 - 在onscroll處理程序中,將其重置爲至少高於底部1px。用戶總是能夠向下滾動(並且總是從向下滾動的「嘗試」中得到scroll事件),但可能沒有注意到剩下1px。

+0

因此,實際上,您的建議是觀察可能影響滾動位置的所有操作的事件?) – lucifer63

+0

是的。沒有實際的滾動發生,你想要捕捉的是*滾動嘗試*。這是沒有的事情,所以你可以做的最好的是注意可能觸發滾動的動作。 – Bergi

0

window.onwheel作品對我來說:

var foo = function() { 
    console.log(new Date()); 
} 

window.onwheel = foo; 

讓我在控制檯中,甚至當我到達頁面頂部的新信息。

正如@bergi指出的,onmousewheel是deprecated,但是onwheel是直接替代品。

+2

請注意'mousewheel'已棄用 – Bergi

+0

@Bergi謝謝,已更新。 – moopet