是否有任何类似“onmousestop”的javascript / jQuery事件或与光学鼠标和/或触摸板等效于“onmousewheel”的任何事件?

我正在尝试为我的网站创建基于Javascript的非活动超时。 控制不活动的function非常简单; 记录“初始时间”的表格值随任何事件同时重置(假设任何事件应指示活动):

function ResetTimeout() { document.forms.TimeoutForm.initialtime.value = (new Date().getTime()) / 1000; }//This function is called on each event, such as an onclick 

在一个单独的函数中,当新的Date()。getTime()(即此时的时间) – document.forms.TimeoutForm.initialtime.value(以毫秒为单位)> 720000(12分钟)时,隐藏的注销表单是提交。 现在,我将这些事件绑定到 ,如下所示:

  

这几乎适用于所有情况,因为我网站上的每个页面都需要一个垂直滚动条来查看页面底部。 在屏幕上的任何位置也可以捕获任何鼠标或触摸板按下。 然而,两个有效的exception值将是(a)从不向下滚动的用户,并且从不点击鼠标/触摸板也不按任何键但仍以某种方式参与该站点和(b)用户(不太可能但可能)向左/向右移动鼠标但从不滚动,单击,也不按任何键。 这两个用户在技术上都会在网站上处于活动状态,但我的代码会将其视为非活动状态。

我通过将onmouseoveronmousemove事件绑定到来尝试对这些用户进行onmousemove ,但即使您根本不移动光标,也会不断触发这些事件。 我找到了HTML5的onmousewheel ,但这对于光学鼠标和触摸板都不起作用(function永远不会触发,因此即使将光标移动到整个屏幕上也不会记录事件)。

是否只有当用户将鼠标移动到屏幕上的任何位置时才会记录jQuery或Javascript中的事件(并且不会保持静止)? 也就是说,只有当xcoord2-xcoord1(或者ycoord相同)在某个时间间隔内不等于零时触发的事件? 我的直觉是这可能很复杂,可能需要代码以不同的时间间隔记录x或y坐标然后进行比较。 或者,是否有任何事件会像onmousestop (动作中的光标停止移动)? 我读到了关于“onwheel”(点击这里 )但我需要适合所有浏览器的东西。 有什么建议? 谢谢

除非鼠标实际移动,否则不会触发mousemove事件

当指针设备(通常是鼠标)在元素上移动时,会触发mousemove事件

这么简单

 var timer; $(document).on('mousemove', function() { clearTimeout(timer); timer = setTimeout(function() { logout(); }, 720000); }); 

小提琴