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

标签 javascript jquery user-inactivity

我正在尝试为我的站点创建基于 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分钟)时,隐藏注销表单已提交。现在,我将这些事件绑定(bind)到 <body>如下:

<body onclick="ResetTimeout()" onkeydown="ResetTimeout()" onscroll="ResetTimeout()">

这几乎适用于所有情况,因为我网站上的每个页面都需要垂直滚动条才能看到页面底部。屏幕上任意位置的任何鼠标或触摸板按下操作也将被捕获。但是,两个有效的离群值将用于 (a) 从不向下滚动、从不单击鼠标/触摸板或按任何键但仍以某种方式参与网站的用户和 (b) 用户(不太可能但可能)向左/向右移动鼠标但从不滚动、单击或按任何键。从技术上讲,这两个用户在网站上都是活跃的,但我的代码会认为它们不活跃。

我尝试通过绑定(bind) onmouseover 来计算这些用户或 onmousemove事件到 <body> , 但即使您根本不移动光标,这些事件也会持续触发。我找到了 HTML5 的 onmousewheel ,但这不适用于光学鼠标或触摸板(功能永远不会触发,因此即使您将光标移到整个屏幕上也永远不会记录事件)。

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

最佳答案

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

The mousemove event is fired when a pointing device (usually a mouse) is moved while over an element

很简单

var timer;

$(document).on('mousemove', function() {
    clearTimeout(timer);

    timer = setTimeout(function() {
        logout();
    }, 720000);
});

FIDDLE

关于javascript - 对于光学鼠标和/或触摸板,是否有任何类似于 "onmousestop"的 javascript/jQuery 事件或任何等效于 "onmousewheel"的事件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24727394/

相关文章:

javascript - 不会改变整个站点高度的可滚动子内容

javascript - d3.js : Generating axis ticks for ordinal values

javascript - 单击菜单项时关闭 jQuery 响应式菜单?

linux - 从 Linux 上的计划任务中检测不活动

swift - 如何在 Swift Cocoa 中检测 OS X 中的用户不活动?

javascript - 循环 - forEach, for, for...of, for...in

javascript - 当用户尝试提交指定表单时如何更改表单参数

javascript - 使用 jquery 单击时,html 中的 li 标记不显示任何操作

ASP.NET 按钮点击触发 jQuery