Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/url/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 当用户离开窗口/选项卡时,如何停止发送数据?_Javascript_Jquery - Fatal编程技术网

Javascript 当用户离开窗口/选项卡时,如何停止发送数据?

Javascript 当用户离开窗口/选项卡时,如何停止发送数据?,javascript,jquery,Javascript,Jquery,我有一个计时器,可以计算花在页面上的时间。我正在使用 如果用户离开计算机或更改选项卡,计时器将停止(以便正确计算所花费的时间)。 这将每隔5秒向服务器发送持续时间,如下所示 setInterval(function() { var timeSpentOnPage = TimeMe.getTimeOnCurrentPageInSeconds(); },5000); 我的问题是,如果用户离开计算机或更改选项卡,我的脚本将继续ping服务器,使用相同的“TimePentonPa

我有一个计时器,可以计算花在页面上的时间。我正在使用

如果用户离开计算机或更改选项卡,计时器将停止(以便正确计算所花费的时间)。 这将每隔5秒向服务器发送持续时间,如下所示

   setInterval(function() { 
    var timeSpentOnPage = TimeMe.getTimeOnCurrentPageInSeconds();
   },5000);
我的问题是,如果用户离开计算机或更改选项卡,我的脚本将继续ping服务器,使用相同的“TimePentonPage”进行更新,因为它在您不活动时停止

如果发生这种情况,我想停止向服务器发送数据

有什么可行的方法可以做到这一点?也许要比较两个不同的计时器?

你可以试试

$(window).on("blur unload",function() {
  TimeMe.stopTimer();
}
$(window).on("focus",function() {
  if (TimeMe) TimeMe.startTimer();
}


if(TimeMe)TimeMe.startTimer();
var-anId;
文件.添加的事件列表器(“可视性更改”,功能(evt){
if(document.visibilityState=='hidden'){
清除间隔(anId);
}否则{
anId=setInterval(函数(){
控制台日志(“可见”);
var timePentonPage=TimeMe.getTimeOnCurrentPageInSeconds();
},5000);  
}

});考虑使用javascript事件来简单地清除间隔。其中一个应该适合你的需要。这可能会有帮助。
<script>
if (TimeMe) TimeMe.startTimer();
</script>