我有一个带有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) 不再表现出这种行为。