簡體   English   中英

檢測當前是否在Android上滾動網頁

[英]Detect if currently scrolling a web page on Android

我試圖檢測用戶何時在Android上使用Javascript滾動網頁。 我的腳本正在使用iPhone,對我而言,它應該適用於Android。 無論如何,一個片段:

previous = pageYOffset;
interval = setInterval(function() {
    //Has scrolling stopped?
    if(previous == pageYOffset) {
        clearInterval(interval);
        //DO SOMETHING AFTER SCROLL COMPLETE
    } else {
        previous = pageYOffset;
    }
}, 200);

基本思路,每200ms輪詢一次pageYOffset,如果沒有變化則沒有滾動發生。 否則,繼續尋找。

正如我所說,這適用於iPhone,所以我假設它與Android有關,可能不會在滾動期間更新pageYOffset?

任何幫助是極大的贊賞!

注意:我選擇了這條路線,因為找不到isScrolling屬性或scrollStop類型事件。 如果我忽略了一個,請告訴我:)


更新:剛試過使用'scroll'事件來檢測這個。 結果好壞參半。 在Android模擬器上,它幾乎正常工作,但在實際手機(2.1 Sense Hero GSM)上非常間歇,即僅檢測到10個滾動中的1個。

即使它在模擬器上“工作”,當您在頁面頂部時向上滾動(即向上推看地址欄)時,它也不會觸發滾動事件。 這是一個問題,因為頁面實際上已滾動(更改位置),但我沒有收到該事件。

請注意,iPhone似乎確實觸發並正確檢測到事件(至少在模擬器中,此刻無法訪問設備)。

有任何想法嗎?


更新2:新的'scroll'事件似乎在某些Android設備上起作用(與模擬器(1.6和2.1)相同)。 將繼續調查,試圖縮小此范圍。

滾動到地址欄時仍然沒有觸發“滾動”問題。 觸摸后可能需要某種“滾動”事件檢測和移動輪詢的混合解決方案。

使用window.onscroll事件來檢測頁面/框架滾動有助於回答您的問題嗎? 該海報使用window.onscroll事件來檢測滾動,因此您可以保存當前位置並在事件處理程序中觸發setTimeout調用。 如果回調發生時,您處於相同位置,則滾動將停止。

英雄有助於插入偶爾的事件,並沒有正確地向javascript報告。 我們在Android開發中發現了其中的一些。 有時你拿着電話的方式似乎很重要(不是開玩笑!)

也許你可以使用onScrollListener?

如何檢測Android ListView滾動停止?

這家伙正試圖檢測停止,但我確信它也適用於滾動。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM