如果用户在页面上不活动,则执行javascript函数?

时间:2010-01-19 22:20:16

标签: javascript jquery

我正在寻找一个javascript或jQuery函数来执行我的函数newalert(),如果用户在页面上没有活动,(可能有一些事件来检查光标位置或类似的东西)

我将使用settimeout进行自动检查,我只想让功能在gmail聊天中检查用户的可用性,当收到新的IM并且你没有看到gmail页面时,它会发出哔哔声。

由于

2 个答案:

答案 0 :(得分:5)

尝试使用window.onblur事件,或者您可以使用连续运行的计时器,当鼠标位置相同x毫秒时,执行该功能。

示例:

var lastX, lastY = 0;
var act_timeout = null;
function doAction() {
   alert( 'not active' );
   return false;
}
function move( e ) {
   if( e.clientY == lastY && e.clientX == lastX ) {
       act_timeout = setTimeout( doAction, 5000 );
       return;
   }
   lastX = e.clientX;
   lastY = e.clientY;
   act_timeout = clearTimeout( act_timeout );
}
window.onmousemove = move;
window.onblur = doAction;

答案 1 :(得分:3)

您首先需要确定用户处于活动状态和活动状态的含义。显而易见的不活动迹象包括窗口blur事件,但您可能希望查看其他事件

  • 窗口blur事件
  • 无鼠标活动:无滚动,点击或移动
  • 无键盘活动

Quirksmode提供了一个很好的鼠标事件清单及其警告。

一旦确定了不活动的含义,您就可以在发生相反的事件时清除您的计时器(移动/点击/滚动鼠标,关注窗口,接收键盘事件等)。