Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/80.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
是否存在类似于“jQuery”的javascript/jQuery事件;onmousestop“;或任何相当于;onmousewheel“;对于光学鼠标和/或触摸板?_Javascript_Jquery_User Inactivity - Fatal编程技术网

是否存在类似于“jQuery”的javascript/jQuery事件;onmousestop“;或任何相当于;onmousewheel“;对于光学鼠标和/或触摸板?

是否存在类似于“jQuery”的javascript/jQuery事件;onmousestop“;或任何相当于;onmousewheel“;对于光学鼠标和/或触摸板?,javascript,jquery,user-inactivity,Javascript,Jquery,User Inactivity,我正在尝试为我的站点创建一个基于Javascript的不活动超时。控制不活动的功能非常简单;记录“初始时间”的表单值随任何事件一起重置(假设为任何事件应表示活动): 在单独的函数中,当new Date().getTime()(即此时的时间)-document.forms.TimeoutForm.initialtime.value(以毫秒为单位)>720000(12分钟)时,提交一个隐藏的注销表单。现在,我将这些事件绑定到,如下所示: <body onclick="ResetTimeout(

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

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

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

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

我试图通过将
onmouseover
onmousemove
事件绑定到
来解释这些用户,但即使您根本不移动光标,这些事件也会持续触发。我在MouseWheel上找到了HTML5的
,但这不适用于光学鼠标或触摸板(该功能从不启动,因此即使在屏幕上移动光标,也不会记录事件)

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

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

当定点设备(通常是鼠标)在元素上移动时,将触发mousemove事件

这么简单

var timer;

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

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

当我将onmousemove=“alert('hey')”添加到标记时,即使光标静止,警报也会持续发出(至少在我的站点上)。如果使用jQuery,会有什么不同吗?我将尝试一下RegardLess这是因为事件会持续激发,并且使用警报会建立一个几乎永远不会结束的大队列,因此您的测试是错误的,请参阅附带的提琴“即使您根本不移动光标,这些事件也会持续触发”-您为什么会这样认为???我的坏..警报()即使光标处于静止状态,也会不断被触发。我在下面被@adeneo纠正了
var timer;

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

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