【问题标题】:jquery/IE mousemove event triggered as tooltip fades, but mouse isn't movingjquery/IE mousemove 事件在工具提示消失时触发,但鼠标没有移动
【发布时间】:2011-06-10 05:34:56
【问题描述】:

我正在尝试让工具提示起作用,以便在显示后淡出。我的代码在 IE8 中运行良好 - mousemove 事件(在图像上)随着工具提示的消失而不断被触发,它会产生脉动效果......淡入/淡出/淡入/淡出。

问题与工具提示有关,因为如果我去掉工具提示代码,mousemove 事件只会在鼠标移动时调用。

你可以在这里看到一个简化的例子:

click to see simplified example (use IE8)

【问题讨论】:

  • 其他人可以复制这个吗?我似乎无法让它触发。
  • 不。在 ie9(ie8 模式)下无法代表它。按预期工作
  • 您使用的是 JQuery 1.5.2 - 尝试升级到 1.6.2,因为这很可能已在源代码中修复。
  • 看在 googler 的份上:由于某种原因,当使用 jquery 为 div 的不透明度设置动画时,我也会在 IE 中得到这些虚假的 mousemove 事件,这些事件与鼠标完全分开,鼠标完全位于不同的 div 上。如下所示,存储鼠标坐标以查看它是否实际移动了。

标签: jquery internet-explorer-8 tooltip fadeout mousemove


【解决方案1】:

是的,我的修复想法似乎奏效了:

ElementLooper.prototype = {
init: function(items, control, outer){
...
var self = this;
...
this.px = null;
this.py = null;
...
outer.mousemove(function(e) {
                  if (self.px == e.pageX && self.py == e.pageY) {
                    return;
                  }
                  self.px = e.pageX;  self.py = e.pageY;
                  self.show_control();
                });

【讨论】:

  • 我明白了...所以您将鼠标移动事件中的当前鼠标位置保存为全局变量,然后在执行任何操作之前检查位置是否已更改?有趣的。我想知道这是否是一个已知的错误,是否需要报告。
【解决方案2】:

是的,我可以在 IE7 和 IE8,jquery-1.6.2 中重现这个

我编写了一个图像幻灯片,它使用fadeIn()/fadeOut() 在图像之间切换。如果鼠标光标在幻灯片上,则在切换图像时会出现 img title="..." 工具提示。当工具提示消失(浏览器在几秒钟后将其淡出)时,将调用 mousemove() 处理程序。

请参阅http://davidhoulder.com 的首页以获取当前(2011 年 7 月 24 日)在 IE7/8 中引发此错误的示例。如果我设法修复或解决此问题,我将更新此答案。

一种可能的解决方法是将 .pageX 和 .pageY 保存在 .mousemove() 处理程序中,如果鼠标真的没有移动就返回。

【讨论】:

    猜你喜欢
    • 2014-09-18
    • 2012-02-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-09-19
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多