检测用户是活跃还是空闲

时间:2018-10-18 14:03:35

标签: javascript events

我正在构建一个浏览器扩展,并想检测用户是否处于活动状态。 因此,我检查用户在过去2分钟内是否移动了鼠标。

但是为了获得更好的结果,我想同时跟踪多个事件。用户在过去两分钟内是否移动了鼠标,是否单击了事件或是否进行了滚动。

这是我的代码来检测鼠标的移动:

document.onmousemove = function() {
  clearTimeout(timeout);
  timeout = setTimeout(function() {
    // user is idle
  }, 120000);
};

如何改进代码以一次跟踪多个事件?

2 个答案:

答案 0 :(得分:1)

这项工作可以吗?

var timeout;
function idle(){
  //idle things
}
document.onmousemove = function() {
  clearTimeout(timeout);
  timeout = setTimeout(idle(), 120000);
};
document.onscroll = function() {
  clearTimeout(timeout);
  timeout = setTimeout(idle(), 120000);
};
//continue with other events

答案 1 :(得分:0)

您可以尝试使用线程js库:

<script src="https://unpkg.com/threads@VERSION/dist/threads.browser.min.js"></script>

尝试这样的事情:

thread
  .send({ string : 'mousemovement' })
  // The handlers come here: (none of them is mandatory)
  .on('mousemovement', function(response) {
    clearTimeout(timeout);
     timeout = setTimeout(function() {
        // user is idle
     }, 120000);
    thread.kill();
    })
  .on('scroll', function(response) {
    //Do something
    thread.kill();
  });

该代码仅是示例,如果您想尝试此方法,请在此处阅读更多信息:https://www.npmjs.com/package/threads

只是同时处理多个任务的一种选择