7

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 は、「マウスの移動が停止しました」を使用して、ブラウザーのクロム (戻る/進むボタンなど) でツールチップをトリガーしているようです。https://bugzilla.mozilla.org/show_bug.cgi?id=82953を参照してください。ただし、これがDOMに影響するかどうかはわかりません。

更新: Firefox 10 がこの動作を示す最後のバージョンのようです。Firefox 11.0 以降では、イベントの伝播に関係なくツールチップが表示されます。

更新: Firefox 33(.1) では、この動作は発生しなくなりました。

4

2 に答える 2

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>

サイコロはありません。ただし、mouseover を含む他のマウス イベントは正常に動作するようです。

これはバグだと思います。bugzilla には記載されていませんが、検索すると、イベント「mouseover」とツールチップとの相関関係が示されているようです。

Firefoxの最新のナイトリー ビルドをここからダウンロードして、まだそこにあるかどうかを確認してください。そうである場合は、バグを報告します。

別の方法として、マウスオーバーで目的の効果が得られるかどうかを確認します。

于 2009-11-09T03:09:49.313 に答える
0

最近、いくつかの Firefox アドオン (つまり、Google ツールバー) がタイトル ツールチップに問題を引き起こすことを読みました。それらを無効にして、これで問題が解決するかどうかを確認してください。

于 2012-07-04T15:22:45.997 に答える