我正在使用Paul Irish的idle-timer插件:http://paulirish.com/2009/jquery-idletimer-plugin/。
我希望在5秒钟不活动后隐藏一些div,并在用户活动被捕获时显示回来。
这是我的代码:
$(document).ready(function(){
$.idleTimer(5000);
$(document).bind("idle.idleTimer", function(){
$("#audio_container").fadeOut(1000);
$(".breadcrumb").fadeOut(1000);
});
$(document).bind("active.idleTimer", function(){
$("#audio_container").fadeIn(1000);
$(".breadcrumb").fadeIn(1000);
});
});
它在Firefox / Safari / Mobile Safari上完美运行,但我无法在Chrome或IE 8/9上运行。 显然onmousemove事件是问题所在,如果我取消绑定onmousemove事件,它可以工作(但我需要它,所以这对我来说不是一个可接受的修复)。
你可以在这里找到一个例子:
致以最诚挚的问候,
编辑:
mousemouve事件位于idle-timer插件中。
$.idleTimer = function(newTimeout, elem){
// defaults that are to be stored as instance props on the elem
var idle = false, //indicates if the user is idle
enabled = true, //indicates if the idle timer is enabled
timeout = 30000, //the amount of time (ms) before the user is considered idle
events = 'mousemove keydown DOMMouseScroll mousewheel mousedown touchstart touchmove'; // activity is one of these events
如果我从插件中删除了mousemove事件,它就可以了。
答案 0 :(得分:4)
如果您不必使用插件并在五秒钟不活动后隐藏div或wathever元素并再次显示它的活动,我想出了一个类似的脚本(在chrome,firefox,explorer中测试):
(使用输入进行演示而不是div)
<input type="text" > /* Use div or any element */
Jquery的:
var interval = 1;
setInterval(function(){
if(interval == 5){
/* if intervall reaches 5 the user is inactive hide element/s */
$('input').hide();
interval = 1;
}
interval = interval+1;
console.log(interval);
},1000);
$(document).bind('mousemove keypress', function() {
/* on mousemove or keypressed show the hidden input (user active) */
$('input').show();
interval = 1;
});
希望它与你所追求的不远。 干杯!