如何使setInterval在浏览器选项卡处于焦点时运行
How to make setInterval run when browser tab is on focus?
我创建了一个间隔,当页面加载时,该间隔每2秒运行一次。现在,当我移动到其他页面时,间隔被清除(请检查代码)。现在我想要的是,当我再次移动到同一个选项卡时,间隔应该重新开始。
我尝试过的一件事是,我在$(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);
});
});
相关文章:
- keyup事件处理程序更改焦点不适用于快速键入
- 单击时将焦点更改为元素
- 如何使用phaser使html5游戏在移动设备浏览器上运行
- 使用压缩的JavaScript文件(不是运行时压缩)
- Javascript运行php文件,然后下载文件
- chrome扩展:尽管运行了at:documentidle,js脚本还是过早启动
- 我已经创建了一个jquery转盘,并使用if条件来运行和停止转盘
- 后焦点更改为IE 11中的地址栏,而不是转移到表单中的下一个控件
- Angularjs代码未在匿名函数中运行
- 如何使setInterval在浏览器选项卡处于焦点时运行
- Jquery焦点(in|out)以奇怪的顺序运行
- 单击在焦点丢失之前注册的位置,但在焦点丢失后运行事件
- 当运行硒测试时,当火狐窗口不在焦点上时,Onblur 事件触发会变得混乱
- 焦点在单击/更改单选按钮之前运行.是否可以在焦点之前运行单击/更改
- 在窗口焦点事件之前在 HTML 的 body 标记中运行 onload 事件
- jQuery在错误时将焦点重新聚焦到同一输入字段,无法在所有浏览器上运行
- 当浏览器不在焦点上时,setTimeout会运行吗?(OS X App Nap)
- $(window).focus()对每个焦点运行两次
- 在焦点出来时运行一个 javascript 函数
- 当焦点在其他窗口时停止运行Javascript web应用程序的方法