Javascript 当浏览器选项卡处于焦点时,如何使setInterval运行?
我已经创建了一个间隔,当页面加载时,它每2秒运行一次。现在,当我移到另一页时,间隔被清除(请检查代码)。现在我想要的是,当我再次移动到同一选项卡时,间隔应该再次开始 我尝试过的一件事是,我在Javascript 当浏览器选项卡处于焦点时,如何使setInterval运行?,javascript,jquery,setinterval,Javascript,Jquery,Setinterval,我已经创建了一个间隔,当页面加载时,它每2秒运行一次。现在,当我移到另一页时,间隔被清除(请检查代码)。现在我想要的是,当我再次移动到同一选项卡时,间隔应该再次开始 我尝试过的一件事是,我在$(window.focus(//code)中编写了整个代码,但问题是当页面最初在任何浏览器的选项卡中打开时,它不会运行 如何解决这个问题 这是我的密码: var zzz= setInterval(anewFunc, 2000); function anewFunc(){ $(document).read
$(window.focus(//code)
中编写了整个代码,但问题是当页面最初在任何浏览器的选项卡中打开时,它不会运行
如何解决这个问题
这是我的密码:
var zzz= setInterval(anewFunc, 2000);
function anewFunc(){
$(document).ready(function(){
var chatattr=$(".chatwindow").css("visibility");
var chattitle=$("#hideid").text();
if(chatattr=="visible"){
$.ajax({
url: 'seen1.php',
type: 'post',
data: "ctitle="+chattitle,
success: function(result9){
},
error: function(){
}
});
}
$(window).blur(function(){
$.ajax({
url: 'session.php',
type: 'post',
success: function(result10){
// alert(result10);
},
error: function(){
}
});
clearInterval(zzz);
});
});
}
我尝试过的一件事是,我在$(window.focus(//code)
中编写了整个代码,但问题是当页面最初在任何浏览器的选项卡中打开时,它不会运行
好的,这里的问题是,setInterval()
不会在0
秒时执行。它仅从2
秒开始。所以你需要做一个小的改变:
ready
事件中,启动计时器,并首次运行该功能.one()
分配一次。您正在重复添加到窗口的.blur()
事件function anewFunc() {
var chatattr = $(".chatwindow").css("visibility");
var chattitle = $("#hideid").text();
if (chatattr == "visible") {
$.ajax({
url: 'seen1.php',
type: 'post',
data: "ctitle=" + chattitle,
success: function(result9) {},
error: function() {}
});
}
$(window).one("blur", function() {
$.ajax({
url: 'session.php',
type: 'post',
success: function(result10) {
// alert(result10);
},
error: function() {}
});
clearInterval(zzz);
});
}
$(document).ready(function() {
var zzz = setInterval(anewFunc, 2000);
anewFunc();
});
现在我想要的是,当我再次移动到同一选项卡时,间隔应该再次开始
您尚未再次启动setInterval()
$(document).ready(function () {
$(window).one("focus", function() {
var zzz = setInterval(anewFunc, 2000);
});
});
如果使用requestAnimationFrame,则浏览器将自动为您执行此操作。它将暂停并为您重新启动循环。您只需要处理计时代码。