检查javascript中的浏览器不活动

检查javascript中的浏览器不活动,javascript,jquery,setinterval,Javascript,Jquery,Setinterval,我已经编写了javascript来警告浏览器上是否有4秒钟没有活动。如果没有浏览器事件,则会出现一个对话框,要求扩展会话。如果4秒钟内没有事件发生,则通知应消失。如果用户单击继续会话,则应重置计数器并检查是否处于非活动状态。 代码如下。在页面加载时,该脚本工作正常,但一旦出现某些活动,该脚本就无法工作。我哪里做错了 var countDownDate=dateAdd(new Date(),4); var标志=假; var x=setInterval(函数(){ callFun(倒计时); },

我已经编写了javascript来警告浏览器上是否有4秒钟没有活动。如果没有浏览器事件,则会出现一个对话框,要求扩展会话。如果4秒钟内没有事件发生,则通知应消失。如果用户单击
继续会话
,则应重置计数器并检查是否处于非活动状态。 代码如下。在页面加载时,该脚本工作正常,但一旦出现某些活动,该脚本就无法工作。我哪里做错了

var countDownDate=dateAdd(new Date(),4);
var标志=假;
var x=setInterval(函数(){
callFun(倒计时);
}, 1000);
var contin=函数(){
flag=true;
document.getElementById(“dialogBox”).style.display=“无”;
document.getElementById(“demo”).style.display=“block”;
}
函数日期添加(日期,单位){
var ret=新日期(日期);
ret.setTime(ret.getTime()+单位*1000);
返回ret;
}
var callFun=函数(倒计时日期){
//获取今天的日期和时间
var now=new Date().getTime();
//找出现在和倒计时日期之间的距离
var距离=倒计时日期-现在;
var分钟=数学楼层((距离%(1000*60*60))/(1000*60));
var秒=数学楼层((距离%(1000*60))/1000);
//使用id=“demo”在元素中显示结果
document.getElementById(“demo”).innerHTML=minutes+“m”+seconds+“s”;
//如果倒计时结束,写一些文字

如果(距离希望下面的解决方案有帮助。当显示对话框时,我再检查3秒钟是否有活动,如果没有活动,则调用
logout
函数。更改
contin
callFun
logout
函数

var countDownDate=dateAdd(new Date(),4);
var标志=假;
变量idleInterval,按钮Interval;
var x=设置间隔(函数(){
callFun(倒计时);
}, 1000);
var contin=函数(){
flag=true;
document.getElementById(“dialogBox”).style.display=“无”;
document.getElementById(“demo”).style.display=“block”;
document.getElementById(“demo”).innerHTML=“0m 0s”;
clearInterval(idleInterval);
buttonInterval=setInterval(函数(){
callFun(倒计时);
}, 1000);
}
函数日期添加(日期,单位){
var ret=新日期(日期);
ret.setTime(ret.getTime()+单位*1000);
返回ret;
}
var callFun=函数(倒计时日期){
//获取今天的日期和时间
var now=new Date().getTime();
//找出现在和倒计时日期之间的距离
var距离=倒计时日期-现在;
var分钟=数学楼层((距离%(1000*60*60))/(1000*60));
var秒=数学楼层((距离%(1000*60))/1000);
//使用id=“demo”在元素中显示结果
document.getElementById(“demo”).innerHTML=minutes+“m”+seconds+“s”;
clearInterval(idleInterval);
//如果倒计时结束,写一些文字

如果(距离似乎需要再次调用“callFun”函数,并在“contin”函数中添加新日期。

您在停止间隔后忘记重新启动间隔

var countDownDate=dateAdd(new Date(),4);
var标志=假;
var x=setInterval(函数(){
callFun(倒计时);
}, 1000);
var contin=函数(){
flag=true;
document.getElementById(“dialogBox”).style.display=“无”;
document.getElementById(“demo”).style.display=“block”;
countDownDate=dateAdd(新日期(),4);
var标志=假;
var x=setInterval(函数(){
callFun(倒计时);
}, 1000);
}
函数日期添加(日期,单位){
var ret=新日期(日期);
ret.setTime(ret.getTime()+单位*1000);
返回ret;
}
var callFun=函数(倒计时日期){
//获取今天的日期和时间
var now=new Date().getTime();
//找出现在和倒计时日期之间的距离
var距离=倒计时日期-现在;
var分钟=数学楼层((距离%(1000*60*60))/(1000*60));
var秒=数学楼层((距离%(1000*60))/1000);
//使用id=“demo”在元素中显示结果
document.getElementById(“demo”).innerHTML=minutes+“m”+seconds+“s”;
//如果倒计时结束,写一些文字

如果(这是部分工作。我还需要的是,一旦对话框打开,如果没有活动,对话框也应该隐藏并调用注销功能。如果有任何活动或用户单击“继续”,则计时器必须重置。@zilcuanu更新了我上面的解决方案。希望这可以工作。这是部分工作。我所做的还需要的是,在显示对话框后,应该有另一个计数器,该计数器将隐藏对话框并调用注销功能。如果显示对话框后没有事件,并且如果有任何活动,则应隐藏对话框并重置计数器。