工具提示(title ="...")将不会在Firefox中显示

Cre*_*esh 7 javascript firefox cross-browser dom-events

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

<div id="foo">
    <input type="text" title="A tooltip" />
</div>
Run Code Online (Sandbox Code Playgroud)

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

document.getElementById('foo').addEventListener(
    'mousemove',
    function(e) { e.stopPropagation() },
    false
)
Run Code Online (Sandbox Code Playgroud)

停止在容器上传播"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() }))
Run Code Online (Sandbox Code Playgroud)

现在鼠标悬停在此问题的任何投票,投票或星标(收藏夹)图标上.工具提示不再出现.再次,仅在Firefox中.

有没有人在Fi​​refox中有这种行为/错误的解决方法?有没人见过这个?

更新:Firefox似乎使用"鼠标停止移动"来触发浏览器镶边中的工具提示(例如后退/前进按钮).请参阅https://bugzilla.mozilla.org/show_bug.cgi?id=82953.但是我无法判断这是否会影响DOM.

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

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

Ken*_*der 1

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

<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>
Run Code Online (Sandbox Code Playgroud)

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

我相信这是一个错误。虽然 bugzilla 中没有列出它,但搜索似乎表明事件“鼠标悬停”和工具提示之间存在相关性。

您可以在此处下载最新的每晚版本的 Firefox,看看它是否仍然存在。如果是,请提交错误

作为替代方案,我会看看鼠标悬停是否会给您带来所需的效果。