3

わかりました、これは奇妙です。次のコードは、開発者ツールで IE8 に変更した場合の IE9 を除いて、すべてのブラウザーで機能します。

var img = $('<img/>').load(function (e) {
    $('.md').append(e.target);
}).attr({ 'id': 'imgprofile', 'src': "http://upload.wikimedia.org/wikipedia/commons/thumb/2/28/HelloWorld.svg/512px-HelloWorld.svg.png", 'style': 'border:2px solid #a8a7a7;' });

ここに例があります: http://jsfiddle.net/RZeY5/5/

ご覧のとおり、画像を dom に追加する代わりに .load イベントが完了すると (IE8 モードのみ)、何かが起こり、画面全体が白くなります (jsfiddle の例では、iframe が白くなります)。

コードの何が問題なのかを理解するために何時間も費やした後 (これは非常に長い JS ファイルです....) 何とか$('.md').append(e.target);行にまとめることができましたが、今何をすべきかわかりません...これは私のせい?これは JQuery の障害ですか? それはIE8のせいですか?この問題を解決するにはどうすればよいですか?

「バグ」が発生するには、IE8 モードである必要があることに注意してください。

EDIT ** IE7モードでも発生するように...

4

1 に答える 1

1

これらの IE では、e.target === documentande.targetは適切ではありません。 e.currentTargetorを使用する必要がありますthis

http://jsfiddle.net/RZeY5/7/

これらの古い IE は を使用しますsrcElementが、これはたまたまnullこの場合であり、jQuery はこの場合にそれを割り当てdocumentます。

    // Fix target property, if necessary (#1925, IE 6/7/8 & Safari2)
    if ( !event.target ) {
        event.target = originalEvent.srcElement || document;
    }
于 2012-07-11T16:51:09.143 に答える