代码之家  ›  专栏  ›  技术社区  ›  Crescent Fresh nosklo

工具提示(title=“…”)不会显示在Firefox中

  •  7
  • Crescent Fresh nosklo  · 技术社区  · 15 年前

    title 属性(即工具提示),包装在某个容器中:

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

    我附上一个 "mousemove"

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

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

    作为快速练习, 火狐

    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是显示此行为的最后一个版本。Firefox11.0及更高版本显示工具提示,而不考虑事件传播。

    更新 :Firefox 33(.1)不再显示此行为。

    2 回复  |  直到 5 年前
        1
  •  1
  •   Ken Kinder    15 年前

    我已经确认了这个问题。我甚至试着用手向 只有

    <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>
    

    没有骰子。不过,其他鼠标事件,包括mouseover,似乎工作正常。

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

    你可以下载最新的 nightly build 看看火狐是否还在。如果是的话, file a bug

        2
  •  0
  •   Thariama    12 年前

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