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

时间:2016-12-27 13:53:24

标签: javascript jquery

我有一个计时器来计算在页面上花费的时间。我正在使用https://github.com/jasonzissman/TimeMe.js

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

   setInterval(function() { 
    var timeSpentOnPage = TimeMe.getTimeOnCurrentPageInSeconds();
   },5000);

我的问题是,如果用户离开计算机或更改标签,我的脚本将继续ping服务器,使用相同的" timeSpentOnPage"更新它。因为它在你不活跃时停止。

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

有什么可能的方法呢?也许比较两个不同的计时器?

2 个答案:

答案 0 :(得分:0)

你可以尝试

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

之前</body>

<script>
if (TimeMe) TimeMe.startTimer();
</script>

答案 1 :(得分:0)

&#13;
&#13;
hDB = MsiGetActiveDatabase(hMSI); 
MsiDatabaseOpenView(hDB, "SELECT * FROM `Feature`", hView); 
hRec = MsiCreateRecord(6);

MsiRecordSetString (hRec,1,"TEST");
MsiRecordSetString (hRec,3,"TEST");
MsiRecordSetInteger(hRec,5,2);
MsiRecordSetInteger(hRec,6,1);
MsiRecordSetString (hRec,7,INSTALLDIR);
MsiRecordSetInteger(hRec,8,0);
MsiViewModify(hView, MSIMODIFY_INSERT_TEMPORARY, hRec);
MsiCloseHandle(hRec);

MsiCloseHandle(hRec);
MsiCloseHandle(hView);  
MsiCloseHandle(hDB); 
&#13;
&#13;
&#13;