我正在尝试为我的网站创建一个基于 Javascript 的不活动超时。控制不活动的功能非常简单;记录“初始时间”的表单值随任何事件一起重置(假设任何事件都应指示活动):
function ResetTimeout() {
document.forms.TimeoutForm.initialtime.value = (new Date().getTime()) / 1000;
}//This function is called on each event, such as an onclick
在单独的函数中,当new Date().getTime()(即此时的时间)-document.forms.TimeoutForm.initialtime.value(以毫秒为单位)>720000(12分钟)时,隐藏的注销表单为提交。现在,我将这些事件绑定到<body>
如下:
<body onclick="ResetTimeout()" onkeydown="ResetTimeout()" onscroll="ResetTimeout()">
这几乎适用于所有情况,因为我网站上的每个页面都需要一个垂直滚动条才能看到页面底部。屏幕上任何位置的任何鼠标或触摸板按下都会被捕获。但是,两个有效的异常值将是(a)从不向下滚动的用户,从不点击鼠标/触摸板,也从不按任何键,但仍以某种方式参与网站和(b)用户(不太可能但可能)向左/向右移动鼠标,但从不滚动、单击或按任何键。从技术上讲,这两个用户在网站上都是活跃的,但我的代码会认为他们是不活跃的。
onmouseover
我尝试通过将或onmousemove
事件绑定到 来计算这些用户<body>
,但即使您根本不移动光标,这些事件也会连续触发。我找到了 HTML5 onmousewheel
,但这不适用于光学鼠标或触摸板(功能永远不会触发,因此即使您在屏幕上移动光标也不会记录事件)。
jQuery 或 Javascript 中是否存在仅当用户在屏幕上任意位置移动鼠标时才记录的事件(并且不会保持静止)?也就是说,仅当 xcoord2 - xcoord1(或 ycoord 相同)在某个时间间隔内不等于零时才会触发的事件?我的直觉是这可能很复杂,可能需要代码以不同的时间间隔记录 x 或 y 坐标,然后进行比较。或者,是否有任何事件类似于onmousestop
(运动中的光标停止移动)?我阅读了有关“onwheel”的信息(单击此处),但我需要适用于所有浏览器的内容。有什么建议么?谢谢