我在Chrome和Mozilla中遇到了這個問題,而IE正常工作。當我最小化瀏覽器或打開新選項卡並在該選項卡上工作一段時間後,計時器暫停,但如果Web應用程序再次處於焦點狀態,則會再次恢復。我知道這是由於時間的差異,例如大約一分鐘左右後,當我返回到Web應用程序時,只有一秒左右的時間已過。我不知道是什麼導致了這個問題。當瀏覽器不在焦點時jQuery計時器暫停
這裏是jQuery的片斷,我用,定時器可以從這裏http://code.google.com/p/jquery-timer/
var countdownTimer, countdownCurrent;
$(document).ready(function() {
countdownCurrent = $('#ctl00_MainContent_example2submit').val() * 100;
countdownTimer = $.timer(function() {
var min = parseInt(countdownCurrent/6000);
var sec = parseInt(countdownCurrent/100) - (min * 60);
var micro = pad(countdownCurrent - (sec * 100) - (min * 6000), 2);
var output = "00"; if (min > 0) { output = pad(min, 2); }
$('.countdowntime').html(output + ":" + pad(sec, 2) + ":" + micro);
if (countdownCurrent == 0) {
$('#ctl00_MainContent_btnNext').click();
} else {
countdownCurrent -= 7;
if (countdownCurrent < 0) { countdownCurrent = 0; }
}
}, 70, true);
$('#example2submit').bind('keyup', function (e) { if (e.keyCode == 13) { countdownReset(); } });
});
function CheckIfOptionSelected() {
var vFlag = true;
var radioButton1 = document.forms[0].elements['ctl00_MainContent_rdBtnListOptions_0'];
var radioButton2 = document.forms[0].elements['ctl00_MainContent_rdBtnListOptions_1'];
var radioButton3 = document.forms[0].elements['ctl00_MainContent_rdBtnListOptions_2'];
var radioButton4 = document.forms[0].elements['ctl00_MainContent_rdBtnListOptions_3'];
if (radioButton1.checked == false && radioButton2.checked == false && radioButton3.checked == false && radioButton4.checked == false && countdownCurrent > 0) {
vFlag = false;
}
else {
countdownReset();
vFlag = true;
}
return vFlag;
}
function countdownReset() {
var newCount = parseInt($('#ctl00_MainContent_example2submit').val()) * 100;
if (newCount > 0) { countdownCurrent = newCount; }
countdownTimer.stop().once();
}
// Padding function
function pad(number, length) {
var str = '' + number;
while (str.length < length) { str = '0' + str; }
return str;
}
這裏的實際問題是什麼?換句話說,你想要頁面有什麼行爲?忘掉jQuery和定時器等等,並詳細描述你正在試圖讓頁面做什麼。另外請注意,定時器並不精確。即使頁面打開,計時器可能會比預期的晚。如果你正在更新時間顯示,你不能根據定時器發射的次數。您需要使用Date對象。 –
感謝邁克爾的答覆......我只想讓考生有一個有限的時間來回答問題。如果他們耗盡時間,即在檢測到定時器elpase之後... jquery點擊下一個按鈕,並且考生將會看到下一個問題。我面臨的問題是......如果考生只是最小化了瀏覽器,計時器會暫停,他將在世界上的所有時間做任何事情。我想阻止這一點。而且你提到了日期對象......可以將它們用於這樣的目的嗎? –
感謝您澄清,這非常有幫助。我想我對你有一些想法 - 我把它寫成答案,以便我可以正確地格式化代碼。 –