我正在构建一个浏览器扩展,并想检测用户是否处于活动状态。 因此,我检查用户在过去2分钟内是否移动了鼠标。
但是为了获得更好的结果,我想同时跟踪多个事件。用户在过去两分钟内是否移动了鼠标,是否单击了事件或是否进行了滚动。
这是我的代码来检测鼠标的移动:
document.onmousemove = function() {
clearTimeout(timeout);
timeout = setTimeout(function() {
// user is idle
}, 120000);
};
如何改进代码以一次跟踪多个事件?
答案 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
只是同时处理多个任务的一种选择