これはIE67および8に影響するバグです。jQueryのドキュメントレディハンドラーは、IE67および8のウィンドウ読み込みイベントの直前または直後まで起動しません。これはIE9では発生しません。
これを修正する1つの方法は、イベントを自分で処理することです。
<body class="jquerydomready">
<!--[if lt IE 9]>
<script>
$('body').removeClass('jquerydomready');
</script>
<![endif]-->
次に、スクリプトでこれを使用します。
function init() {
// code here will be ran when document is ready
$("body").css("background-color","green");
}
if ( $("body").is(".jquerydomready") ) {
$(init); // not oldIE
}
else {
// oldIE way
document.onreadystatechange = function() {
if (document.readyState == "interactive") init();
}
}
ただし、ajaxリクエストを実行していて、それらがすぐに発生することを期待している場合、またはコードが機能しない場合は、ネットワークに常に依存できるわけではないため、迅速に実行する必要のないシステムに移行することをお勧めします。速い。
チケット: http: //bugs.jquery.com/ticket/12282
現在、実際にはバグとしてマークされていませんが、この問題の履歴をたどると、jQueryの開発中に何度か修正および修正解除されています。
編集:私はこの答えのIE6の部分について完全に確信していません、私はこれでIE6をテストしていません。
これは、IE7および8で不適切に待機していることを示すサポートJSFiddleです(これもIE6ではテストされていません)。
上記の修正前:http://jsfiddle.net/PFWmS/
上記の修正後:http://jsfiddle.net/PFWmS/7