Javascript 为什么$(document.blur()和$(document.focus()不能与Safari或Chrome一起使用?
我正在做一个计数器,当文件聚焦时,它会倒计时。当它在模糊上时,它停止倒计时 它在FF中工作,但在Safari和Chrome中,计数器根本不工作 Safari/Chrome是否存在兼容性问题 我所使用的是Javascript 为什么$(document.blur()和$(document.focus()不能与Safari或Chrome一起使用?,javascript,jquery,html,Javascript,Jquery,Html,我正在做一个计数器,当文件聚焦时,它会倒计时。当它在模糊上时,它停止倒计时 它在FF中工作,但在Safari和Chrome中,计数器根本不工作 Safari/Chrome是否存在兼容性问题 我所使用的是$(document).blur()和$(document).focus(),它们都在$(document).ready()块中 var tm; $(document).ready(function(){ var seconds = 50; $('#time
$(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);
});
});
var-tm;
$(文档).ready(函数(){
var秒=50;
$('#timer').html(秒);
倒计时();
$(窗口).focus(函数(){
函数倒计时(){
如果(秒>0){
秒--;
$(“#计时器”).text(秒);
tm=设置超时(倒计时,1000);
}
如果(秒)我一直使用$(窗口).focus()
和$(窗口).blur()
。请尝试这些方法
另外,请注意,在FF和IE中,“focus”事件在~document load时触发,而在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);
});
});
var-tm;
var秒=50;
var-inFocus=true;
函数倒计时(){
如果(秒>0){
秒--;
}
如果(秒)嗨,谢谢你的回答。我尝试过你的方法。它只对第二个焦点有效。但是计数器没有启动(窗口)。focus()。有没有办法解决这个问题,即使它需要更多的代码?谢谢洛蒂已经解释了在Chrome中不计算第一个焦点的原因。我用一个跨浏览器解决方案更新了我的答案(我想大概是这样)。您好,谢谢您的解决方案。我只是不明白应该在if语句中添加什么内容。//count=1;
和//count++;
之间有什么区别?非常感谢您的帮助。Regards@alexx0186if
状态在文档加载时只执行一次。它定义了在浏览器是Chrome或Safari。每次窗口获得焦点时,count++
都会执行,并增加计数器。我不确定=1和++是否是您所需要的,因为您没有详细描述您希望计数器如何工作。@Alex0186现在我明白了您试图实现的目标。请看一下我更新答案中的代码。