2

私が読んだすべてのドキュメントから、マウスアウト イベントは、ユーザーが実際にその要素の境界の外にマウスを移動したときにのみ要素と呼ばれます。

私は、要素がクリックされて隠され、クリックの座標が隠されている要素と隠されている要素の間で重なっているときにも、要素で mouseout イベントが発生することを確認しました。

次の要素を検討してください。 隠蔽された要素

要素の緑色の部分 (不明瞭な要素と重なっている領域) をクリックすると、ブラウザー間で一貫性のない動作が見られます。Chrome と Firefox は隠蔽された要素で mouseout イベントを発生させますが、IE と Opera は隠蔽された要素で mouseout イベントを発生させません。HTML/CSS 仕様によると、この条件の「正しい」動作はありますか? CSS ビジュアル フォーマッティング モデルは、イベント処理について何も述べていません。

コードは次のとおりです。

$( '#button' ).on( 'click', function(e) {
    $( '#overlay' ).show();
    log( document.activeElement + ' has the focus' );
});

$( '#button' ).on( 'mouseout', function(e) {
    log( 'target: ' + e.relatedTarget.id );
    log( 'why are you mousing out?' );
});

これが実際の例です: http://jsfiddle.net/jmjpro/7Jp2G/6/

4

3 に答える 3

2

オーバーレイを表示すると、マウスがボタンの上になくなります。オーバーレイを表示することで、mouseout イベントをトリガーしています。

于 2013-10-30T15:36:44.637 に答える
2

オーバーレイ div は、ボタン div の上に配置されます。

これが、ボタン div をクリックするとオーバーレイ div が表示され、mouseout イベントがトリガーされる理由です。

すべてのcssを削除するだけでテストできます。それはあなたが望むように正確に機能します。

于 2013-10-30T15:40:04.577 に答える
1

絶対配置要素はページ フローの一部ではなく、異なる規則に従います。このため、オーバーレイは元の div の一部としてカウントされません。つまり、技術的にはマウスが上にないことを意味します。

于 2013-10-30T15:41:21.300 に答える