【问题标题】:jQuery mousemove() is called even if the mouse is still即使鼠标还在,也会调用 jQuery mousemove()
【发布时间】:2011-01-02 15:36:16
【问题描述】:

对我来说,如果我尝试以下示例:http://jsfiddle.net/bY3CC/3/ 即使我将鼠标移到文档上然后让它静止不动,“鼠标已移动”文本也会出现...

这是为什么呢? ;\

而且,似乎该消息仅出现在 Chrome 中......

奇怪:-s

【问题讨论】:

标签: jquery google-chrome mousemove


【解决方案1】:

存储 x,y 坐标

$(document).mousemove((function(){
    var x,y;

    return function(evt){
        if(evt.clientX == x && evt.clientY == y){
            return;
        }
        x = evt.clientX;
        y = evt.clientY;
        $('#messages').append('mouse moved<br/>');
    };
})());

【讨论】:

    【解决方案2】:

    全局event 对象是非标准的,所以它只存在于某些浏览器中,例如 IE(可能只存在于 quirks 模式)并且在 Chrome 中出现。

    接受事件对象作为事件处理程序的参数:

    var last_moved=0;
    $(document).mousemove(function(e){
      var now = e.timeStamp;    
      if (now - last_moved > 1000) {
        $('#messages').append('mouse moved<br/>');
        last_moved = now;
      }
    });
    

    jsfiddle.net/bY3CC/5/

    【讨论】:

    • 好的,解决了一半的问题。现在,如果鼠标静止,为什么会出现消息?
    • 我现在没有安装 Chrome,但是我已经在 Firefox 3、IE 9、Opera 11 和 Safari 4 中测试过,当鼠标静止时它们不会触发事件。也许 Chrome 做了一些奇怪的事情,或者你有一些插件或可能导致这种情况的东西?
    • 这也发生在我的 Chrome 安装(9.0.597.19 beta)上。奇怪的是,打印当前鼠标像素位置显示它总是在同一个位置。
    • 这很奇怪,重新启动 Chrome 后,它工作得很好......这就是我正在做的事情:D bit.ly/hRpiqr
    • @Guffa 为什么当您单击文档时它也会显示消息?鼠标还在原来的位置?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-10-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多