0

我想记录用户活动。根据其他用户对 StackOverflow 的回应,我制作了一个小型 jQuery 库:

var stop_timeout = false;
$(window).blur(function(){
    elvis('left the building since ');
}).focus(function(){
    elvis('come back now:');
}).mousemove(function() {
    zima();
}).keyup(function() {
    zima();
});

function elvis(ce) {
    var now=new Date();
    $('.showMe').append('Elvis ' + ce + now.getHours() + ':' + now.getMinutes() +':'+now.getSeconds()+'<br>');
}

function zima() {
   clearTimeout(stop_timeout);
   stop_timeout = setTimeout(function() {
       $('.showMe').append('No activity since 10 seconds...<br>');
   }, 10000);
}

和html:

<input type="text" size="20"> 
<div class="showMe"></div>

代码工作正常,显然,即使我模糊或专注于窗口,mousemove 和 keyup 事件也会触发。我需要的是仅在 $(window).focus() 上触发 mousemove 和 keyup

谢谢 !

编辑:我也在这里做了一个 Jfiddle:http: //jsfiddle.net/6RLBQ/5/

4

2 回答 2

0

对不起,伙计们,这个愚蠢的问题。我相信我现在明白了。mousemove() 和 keyup() 默认绑定到 $(window) 并且它只在窗口焦点上触发。问题关闭!

于 2013-06-13T12:40:39.017 回答
0

我认为你keyup event应该触发你的input element喜欢,

$('input').keyup(function () {
    zima();
});

完整代码

var stop_timeout = false;

$(document).blur(function () {
    elvis('left the building since ');
}).focus(function () {
    elvis('come back now:');
}).mousemove(function () {
    zima();
});

$('input').keyup(function () {
    zima();
});
于 2013-06-13T11:50:19.603 回答