5

Internet Explorerは、イベントターゲットが要素の上に配置され、背景がない場合、onmousemoveイベントを発生させません<img>

ただし、ターゲットにバックグラウンドがある場合は、イベントを登録します。誰かがこれについての説明がありますか?IE10、IE9、IE8でも同じ動作をしました。

ここでフィドル:http: //jsfiddle.net/xSpqE/2/

4

2 に答える 2

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 バグ: 背景色が透明でない絶対配置要素

于 2013-01-14T00:45:50.957 に答える
0

さらに別の IE が失敗します。これは答えというよりは回避策ですが、うまくいくようです:

var is_ie = $.browser.msie;
if(is_ie){
    $('.main img').mousemove(function(e){
        $('.pageX').text('pageX: '+e.pageX);
    }
}

それは$('.overlay').mousemove機能に追加されるので、それも保持してください。もちろん、is_ieチェックはオプションです。

于 2013-01-14T00:31:23.440 に答える