2014-03-29 67 views
1

我正在構建一個旨在在手機和桌面上運行的Web應用程序。應用程序的一部分是測驗。我在頁面頂部倒計時時鐘倒計時一秒鐘。倒計時暫停在移動設備上滾動,但不在桌面上

window.setInterval(function() { 
    console.log("THIS STOPS WHILE SCROLLING"); 
}, 1000); 

當用戶觸摸屏幕,並持有於Android和iOS設備,該功能暫停,然後滾動或觸摸完成/釋放時恢復。

我需要時鐘來保持更新和計數,而用戶觸摸屏幕。我怎麼做?我正在使用AngularJS

+0

你可能會不喜歡這一點,但:https://stackoverflow.com/questions/11177774/setinterval-pauses -in-iphone-ipad-mobile-safari-scrolling – ivarni

+0

有一種說法認爲,它已在iOS 6.1中修復,但 – ivarni

+0

這不僅適用於iOS。就我所瞭解的情況而言,這個問題/答案是關於定時器不再被刪除的。 Android中也發生了同樣的事情。 – LuckyLuke

回答

1

您可以禁用使用這樣的代碼在觸摸設備上滾動:

var disableScroll = function (e) { 
    if (yourAlarmIsRunning === true) { 
     e.preventDefault(); 
    } 
}; 

document.body.addEventListener('touchstart', disableScroll, false); 
document.body.addEventListener('touchmove', disableScroll, false); 

因爲它聽起來像你只需要禁用它,如果你報警的事情正在運行,使用一個變量來保持它是否正在運行的軌跡,如果是,則禁用滾動。

+0

感謝您的回答,但我需要能夠滾動。當用戶回答問題時,計時器將在屏幕頂部運行45分鐘。他/她必須能夠在屏幕上滾動。 – LuckyLuke

+0

@LuckyLuke在這種情況下,不,沒有辦法做到這一點。滾動是由瀏覽器處理的,作爲JS開發人員並沒有向我們透露有關內部發生的事情(在這種情況下,setIntervals因爲滾動而有趣地工作) –

+0

該死的。你知道其他方式跟蹤客戶端的時間沒有這些暫停?這是一個測驗,我需要知道用戶花了多長時間。 – LuckyLuke

0

您可以使用一些「滾動」庫來模擬原生滾動。這樣,超時和間隔不會暫停;)

我在過去有同樣的問題,這對我有效。

我不記得我曾經準確至極庫,但這樣的事情可能工作:https://jamesflorentino.github.io/nanoScrollerJS/

相關問題