【问题标题】:execute a javascript function if the user is not active on the page?如果用户在页面上不活动,则执行 javascript 函数?
【发布时间】:2010-01-19 22:20:16
【问题描述】:

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

我将使用 settimeout 使其自动检查,我只希望该功能可以检查用户的可用性,例如在 gmail 聊天中,当收到新的 IM 并且您没有观看 gmail 页面时,它会播放哔哔声。

谢谢

【问题讨论】:

    标签: javascript jquery


    【解决方案1】:

    尝试使用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;
    

    【讨论】:

    • 我试过了,但它只能工作一次,并且执行警报时页面似乎正在加载内容。谢谢
    【解决方案2】:

    您首先需要确定用户活跃和活跃意味着什么。不活动的明显迹象包括窗口 blur 事件,但您可能想查看其他这些

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

    Quirksmode 提供了一份很好的鼠标事件列表及其注意事项。

    一旦您确定不活动意味着什么,您就可以在发生相反事件(鼠标移动/单击/滚动、窗口聚焦、键盘事件接收等)时清除计时器。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2017-11-16
      • 1970-01-01
      • 2017-08-18
      • 2014-02-15
      • 2019-03-08
      • 2014-11-07
      • 2017-04-19
      相关资源
      最近更新 更多