2010-06-27 155 views
3

我试图做一个google.com类似淡入(CEPT我想淡出文本)jQuery的鼠标移动()获取无鼠标移动

<script src="http://code.jquery.com/jquery-latest.min.js"></script> 
<script> 
    $(document).ready(function() { 
    $("html").mousemove(function() { 
     $("p").fadeOut("slow"); 
    }); 
    }); 
</script> 

与该代码被激活,我淡出自动获得虽然我没有移动鼠标,但激活了。在所有浏览器中都会发生。有小费吗?

+0

无法在Chrome 5,FF 3.6中重现。 – 2010-06-27 23:03:15

+0

这里是一个例子http://www.ximnet.com.my/jquery/mousemove.htm – thegreyspot 2010-06-28 00:13:30

回答

5

由于该事件触发一次开始,每次mousemove火灾你移动一个像素,你可以只忽略第一个(可能是自动,依赖于浏览器)mousemove事件得到你想要的效果,像这样:

$(function() { 
    var moveCount = 0; 
    $("html").mousemove(function() { 
    if(moveCount++ === 0) return; //first run? 
    $("p").fadeOut("slow"); 
    $(this).unbind('mousemove'); //unbind this, no need to stick around 
    }); 
});​ 

You can try a demo here,所有我们正在做的是忽略了mousemove事件的非常第一次点火,之后我们做了淡化和取消绑定该处理程序,以便它不为将来mousemove点火运行,只是清理。

+0

我知道肯定的是,Firefox(至少3.x)不*触发自动mousemove事件。因为,有时候我想知道为什么Google搜索页面没有执行淡入。当然,因为我没有移动鼠标。任何需要修复的浏览器,因为这只是意想不到的和奇怪的行为。 – 2010-06-27 23:21:07

+0

酷尼克!这样可行。 虽然如果鼠标位于网站区域(未移动),但在Chrome中会激活。 Firefox和IE工作正常。没什么大不了。再次感谢(**希望他可以给加一!) @乔治玛丽安我不是唯一一个问题检查http://forum.jquery.com/topic/mousemove-strange-behavior-in-ie是你确定谷歌使用jQuery的褪色? – thegreyspot 2010-06-28 00:11:50

+0

不,他们不使用jQuery:onmousemove =“google && google.fade && google.fade(event)”....任何想法是什么关于jQuery或可能的各种方法钩入事件是造成这种情况? – 2010-06-28 00:27:23

0

你确定没有'微动'吗?有时光学鼠标可能会导致运动只是注入灰尘或污垢。

+0

好点,但我没有与其他情况下的问题(例如google.com) – thegreyspot 2010-06-28 00:14:08

1

看来,如果加载页面并且鼠标在页面上出现,那么页面加载后会触发事件。尝试将鼠标悬停在地址栏上或浏览器顶部菜单上的某处,使用F5刷新页面,并注意事件未被触发。同样,尝试使用F5刷新并立即右键单击页面。将鼠标悬停在页面上,但确保上下文菜单仍处于打开状态。一旦页面加载完毕,不用移动鼠标,点击键盘上的退出键,鼠标将退出上下文菜单并返回页面。鼠标没有移动,但在页面上检测到并且事件被触发。

在Windows 7上使用Chrome 5进行测试。懒得尝试其他浏览器,但我认为它是同样的事情。