如何延迟鼠标移动检测30秒

时间:2014-09-11 13:30:22

标签: jquery

我有这个探测器脚本,以便检测用户/鼠标是否从页面离开(退出陷阱)。 除了脚本之外它的工作效果太快,有时它会检测鼠标最初从地址栏进入页面的时间。如何延迟30秒,以便只有当用户在页面上停留30秒时才进行检查?

jQuery(document).ready(function($) {
jQuery(document).setTimeout(function(f) {           
jQuery(document).mousemove(function(e) {    
if (e.pageY - jQuery(document).scrollTop() <= 7)
if ( document.referrer == null  {        USER LEAVING !!! }
});
, 2000);
});

2 个答案:

答案 0 :(得分:0)

我能想到的最简单的方法是在页面加载时获取时间戳,然后每次鼠标移动时都检查它。

基本上:

var movementThreshold = 0;
$(document).ready(function () {
    movementThreshold = new Date().getTime() + 30000; // Get the current time, add 30s
});
$(document).mousemove(function (e) {
    if (new Date().getTime() > movementThreshold) {
        // process the event, at least 30s has passed
    }
});

答案 1 :(得分:0)

我已经重写了下面的代码来修复一些语法错误和功能问题

一些提示

  • 除非有特殊原因,否则请使用$ not jQuery。它更短更简洁。
  • setTimeout不是jQuery方法,请参阅docs here
  • 为什么你甚至试图阻止用户离开?除非您专门尝试帮助用户不丢失未保存的数据,否则这是糟糕的用户体验。
  • 您的支票已损坏以检测用户是否正在离开某个网页,我建议您搜索this之类的内容。

$(function($) {
    setTimeout(function() {
        $('body').mousemove(function(e) {    
            if (
                (e.pageY - jQuery(document).scrollTop() <= 7) &&
                (document.referrer == null)
            ) {
                // handle
            }
        });    
    }, 30000);
});