Jquery 如何将鼠标移动检测延迟30秒
我使用这个检测器脚本来检测用户/鼠标是否离开页面(退出陷阱)。 除了脚本速度太快外,它工作得很好,有时它会检测鼠标何时从地址栏进入页面。如何将其延迟30秒,以便仅当用户在页面上停留30秒时才进行检查Jquery 如何将鼠标移动检测延迟30秒,jquery,Jquery,我使用这个检测器脚本来检测用户/鼠标是否离开页面(退出陷阱)。 除了脚本速度太快外,它工作得很好,有时它会检测鼠标何时从地址栏进入页面。如何将其延迟30秒,以便仅当用户在页面上停留30秒时才进行检查 jQuery(document).ready(function($) { jQuery(document).setTimeout(function(f) { jQuery(document).mousemove(function(e) { if (e.pageY - j
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);
});
jQuery(文档).ready(函数($){
jQuery(document).setTimeout(函数(f){
jQuery(document).mousemove(函数(e){
if(e.pageY-jQuery(document).scrollTop()我能想到的最简单的方法是在页面加载时获取一个时间戳,然后在每次mousemove启动时检查它
基本上:
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
}
});
我在下面重写了您的代码,以修复一些语法错误和函数问题
一些提示
- 除非有特殊原因,否则使用$NOTjQuery。它更简短
- setTimeout不是jQuery方法,请参阅
- 为什么你甚至试图阻止用户离开?这是糟糕的用户体验,除非你特别试图帮助用户避免丢失未保存的数据
- 您的检查被破坏,无法检测用户是否正在离开页面,我建议您搜索类似的内容
$(函数($){
setTimeout(函数(){
$('body').mousemove(函数(e){
如果(
(e.pageY-jQuery(document).scrollTop()您能不能不将mousemove事件包装在setTimeout中?似乎没有work@Tom我想他的意思是$(document).mousemove(function(){setTimeout(/*Your stuff*/,30000);})
。旁注:对于网页上发生的大多数事情来说,30秒太长了。{}有点问题
和()
成对。也不工作。。
$(function($) {
setTimeout(function() {
$('body').mousemove(function(e) {
if (
(e.pageY - jQuery(document).scrollTop() <= 7) &&
(document.referrer == null)
) {
// handle
}
});
}, 30000);
});