【问题标题】:Tooltips (title="...") won't show in Firefox工具提示(title="...")不会在 Firefox 中显示
【发布时间】:2010-11-03 12:57:00
【问题描述】:

我有一个带有title 属性的元素(即工具提示),包装在某个容器中:

<div id="foo">
    <input type="text" title="A tooltip" />
</div>

我在容器上附加了一个"mousemove" 事件监听器并停止事件传播:

document.getElementById('foo').addEventListener(
    'mousemove',
    function(e) { e.stopPropagation() },
    false
)

这种停止在容器上传播“mousemoves”的组合现在可以防止工具提示出现在内部文本框中,在 Firefox 中 2 及更高版本。我尝试过 FF 2[.0.0.20]、3[.0.11] 和最新的 3.5(Windows Server 2003、XP)。

作为一个快速练习,Firefox 用户可以通过在地址栏中运行以下等效逻辑来查看此错误:

javascript:void($('div.vote').mousemove(function(e){ e.stopPropagation() }))

现在将鼠标悬停在此问题的任何赞成、反对或星号(收藏夹)图标上。工具提示不再出现。 同样,仅在 Firefox 中

是否有人对 Firefox 中的这种行为/错误有解决方法?有其他人目睹过吗?

更新:似乎 Firefox 使用“鼠标停止移动”来触发浏览器 chrome 中的工具提示(例如后退/前进按钮)。见https://bugzilla.mozilla.org/show_bug.cgi?id=82953。但是我不知道这是否会影响 DOM。

更新:Firefox 10 似乎是最后一个出现此行为的版本。无论事件传播如何,Firefox 11.0 及更高版本都会显示工具提示。

更新:Firefox 33(.1) 不再出现此行为。

【问题讨论】:

  • "当您将鼠标悬停在“投票”按钮上时,它不再出现工具提示。"错误。
  • 同上,不会发生在我身上。
  • @Ian, @altCognito:您尝试使用哪个 Firefox 版本?
  • @Ian, @altCognito:你运行的是什么操作系统?
  • Crescent,我得到了与您描述的相同的行为 - Windows XP 上的 FF 3.0.11。如果我冒险猜测,我会怀疑 FireFox 使用 mousemove 来识别何时/是否显示工具提示,并通过停止事件传播来阻止它到达执行此操作的事件处理程序。您可能需要在不停止事件传播的情况下找到另一种方法来做您想做的事情。

标签: javascript firefox cross-browser dom-events


【解决方案1】:

我最近读到一些 Firefox 插件(即 google 工具栏)会导致标题工具提示出现问题。停用它们并检查这是否能解决您的问题。

【讨论】:

    【解决方案2】:

    我已经确认了这个问题。我什至尝试使用以下代码手动将事件传播到输入框:

    <div id="foo" title="A tooltip 2"> <input title="A tooltip" type="text" id="bar"/>
    </div>
    <script type="text/javascript">
    document.getElementById('foo').addEventListener(
        'mouseover',
        function(e) {
            e.stopPropagation();
            if (document.createEvent) {
                var inputBox = document.getElementById('bar');
                var evt = document.createEvent("MouseEvents");
                evt.initMouseEvent("mousemove", true, true, window, e.detail, e.screenX, e.screenY, e.clientX, e.clientY, false, false, false, false, null, null);
                inputBox.dispatchEvent(evt);
            }
        },
        false
    )
    </script>
    

    没有骰子。但是,其他鼠标事件(包括鼠标悬停)似乎可以正常工作。

    我相信这是一个错误。虽然它没有在 bugzilla 中列出,但似乎确实在事件“鼠标悬停”和工具提示之间搜索了 indicate a correlation

    你可以在这里下载最新的nightly build Firefox,看看它是否还在。如果是,file a bug

    作为替代方案,我会看看鼠标悬停是否会给你想要的效果。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2015-05-09
      • 2021-10-30
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多