ale*_*186 4 html javascript jquery
我正在制作一个计数器,当文档处于焦点时会倒计时.它在模糊时停止倒计时.
它在FF中工作,但使用Safari和Chrome,计数器根本不起作用.
Safari/Chrome是否存在兼容性问题?
我正在使用的是$(document).blur()和$(document).focus(),并且在一个$(document).ready()区块内都有.
var tm;
$(document).ready(function(){
var seconds = 50;
$('#timer').html(seconds);
countdown();
$(window).focus(function(){
function countdown(){
if (seconds > 0) {
seconds--;
$('#timer').text(seconds);
tm = setTimeout(countdown,1000);
}
if (seconds<=0){
$('#timer').text('Go');
}
});
$(window).blur(function(){
clearTimeout(tm);
seconds++;
$('#timer').text(seconds);
});
});
Run Code Online (Sandbox Code Playgroud)
Dmy*_*nko 12
我一直习惯$(window).focus()和$(window).blur().试试这些.
此外,请注意,在FF和IE中,"焦点"事件会触发〜文档加载,而在Chrome和Safari中,它只会在窗口失去焦点之前触发,现在它已经重新获得它.
UPD:现在,当您粘贴代码时,我将其重新设计为(希望)符合您的目的:
var tm;
var seconds = 50;
var inFocus = true;
function countdown() {
if (seconds > 0) {
seconds--;
}
if (seconds <= 0) {
$('#timer').text('Go');
}
else {
$('#timer').text(seconds);
tm = setTimeout(countdown, 1000);
}
}
$(function() {
$('#timer').html(seconds);
countdown();
$(window).focus(function() {
if(!inFocus) {
countdown();
}
});
$(window).blur(function() {
inFocus = false;
clearTimeout(tm);
seconds++;
$('#timer').text(seconds);
});
});
Run Code Online (Sandbox Code Playgroud)