【问题标题】:Jquery mousemove() gets activated without a mouse movementJquery mousemove() 在没有鼠标移动的情况下被激活
【发布时间】:2010-06-27 22:34:54
【问题描述】:

我正在尝试做一个像淡入那样的 google.com(我想淡出文本)

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

使用该代码,尽管我没有移动鼠标,但我的淡出功能会自动激活。发生在所有浏览器中。有什么建议吗?

【问题讨论】:

标签: jquery fadeout mousemove


【解决方案1】:

由于事件最初会触发一次,并且每次移动像素时都会触发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,我们所做的只是忽略 very 第一次触发 mousemove 事件,然后我们执行淡入淡出并取消绑定此处理程序,使其不会运行未来的mousemove 解雇,只是清理。

【讨论】:

  • 我确定 Firefox(至少 3.x)确实触发自动 mousemove 事件。因为,有时我想知道为什么 Google 搜索页面没有执行淡入。当然,这是因为我没有移动鼠标。任何确实需要修复的浏览器,因为这只是意外和奇怪的行为。
  • 酷尼克!这样可行。奇怪的是,如果鼠标放在网站区域(未移动),它会激活。 Firefox 和 IE 工作正常。没什么大不了。再次感谢(**希望他能给加一!)@George Marian 我不是唯一一个有问题的人,看看forum.jquery.com/topic/mousemove-strange-behavior-in-ie你确定谷歌使用 jquery 来淡化吗?
  • 不,他们不使用 jQuery:onmousemove="google&&google.fade&&google.fade(event)" .... 知道 jQuery 怎么样,或者可能有各种方法挂钩导致这种情况的事件?
  • 我还注意到 Flash 对象和更改选项卡会触发我无法解释的 mousemove 事件。
  • 在我的情况下(谷歌浏览器),moveCount 正在攀升到 3,而我身边根本没有鼠标移动。因此,我必须在 5 上设置一个阈值才能真正“听”mousemove。
【解决方案2】:

似乎如果页面加载并且页面加载后鼠标出现在页面上,它将触发一个事件。尝试通过将鼠标放在地址栏上或浏览器顶部菜单上的某处将鼠标从页面中隐藏,使用 F5 刷新页面并注意未触发事件。同样,尝试使用 F5 刷新并立即右键单击页面。将鼠标悬停在页面上,但确保上下文菜单仍处于打开状态。页面加载后,完全不移动鼠标,按键盘上的 Escape 键,鼠标将退出上下文菜单并返回页面。鼠标没有移动但在页面上检测到并触发事件。

在 Windows 7 上的 Chrome 5 中测试。懒得尝试其他浏览器,但我认为它是同一件事。

【讨论】:

    【解决方案3】:

    你确定没有“微动”吗?有时,光学鼠标会导致移动仅与灰尘或污垢有关。

    【讨论】:

    • 好点,但我在其他情况下没有问题(例如google.com)
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-10-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-02-05
    • 1970-01-01
    相关资源
    最近更新 更多