Internet Explorerは、イベントターゲットが要素の上に配置され、背景がない場合、onmousemoveイベントを発生させません<img>
。
ただし、ターゲットにバックグラウンドがある場合は、イベントを登録します。誰かがこれについての説明がありますか?IE10、IE9、IE8でも同じ動作をしました。
ここでフィドル:http: //jsfiddle.net/xSpqE/2/
Internet Explorerは、イベントターゲットが要素の上に配置され、背景がない場合、onmousemoveイベントを発生させません<img>
。
ただし、ターゲットにバックグラウンドがある場合は、イベントを登録します。誰かがこれについての説明がありますか?IE10、IE9、IE8でも同じ動作をしました。
ここでフィドル:http: //jsfiddle.net/xSpqE/2/
OPが理由を尋ねたので、ここに私のブレークスルーがあります:
img
視覚的に説明する方が簡単なので、最初にsにクリック ハンドラーを追加しましょう。
$('img').click(function() {
$('.pageX').text('img clicked!');
});
けっこうだ。Chrome/Firefox/非 IE ブラウザーで画像をクリックしても、絶対位置が画像div
を覆っているため、何も起こりません。
IEで試してみてください。のimg
クリック ハンドラが起動されます。したがって、IE が絶対配置された「透過」(コンテンツや背景なし) 要素を介して要素をプッシュすることを示しています。さらに興味深いことに、相対的に配置された要素は同じ問題を抱えており、z-index
いずれかまたは両方の要素を設定しても解決されません。もちろん、画像はオーバーレイの上にあるため、オーバーレイのmousemove
イベントはトリガーされません。
回避策は、オーバーレイに何らかの「塗りつぶし」を提供することです。たとえば、background:rgba(0,0,0,0)
IE が絶対位置の要素を上部に保持するように強制します。フィドル。rgba をサポートしていないブラウザーをサポートする必要がある場合は、1x1px の透明な gif を背景として使用してください。
これが仕様で定義されていることも、公式にバグとして報告されていることも見たことがありません。コンテンツや背景のない絶対配置要素がこの z-index の問題を被る論理や理由はありません。したがって、これをさらに別の IE バグと呼びます。Microsoft フォーラムで報告すると役立つかもしれません。
また、関連する質問: IE バグ: 背景色が透明でない絶対配置要素
さらに別の IE が失敗します。これは答えというよりは回避策ですが、うまくいくようです:
var is_ie = $.browser.msie;
if(is_ie){
$('.main img').mousemove(function(e){
$('.pageX').text('pageX: '+e.pageX);
}
}
それは$('.overlay').mousemove
機能に追加されるので、それも保持してください。もちろん、is_ie
チェックはオプションです。