Ответ 1
Это ошибка, которая влияет на IE6 7 и 8. jQuery document ready handler не запускается до начала или сразу после события загрузки окна в IE 6 7 и 8. Этого не происходит в IE9.
Один из способов исправить это - обработать событие самостоятельно.
<body class="jquerydomready">
<!--[if lt IE 9]>
<script>
$('body').removeClass('jquerydomready');
</script>
<![endif]-->
а затем в script используйте это:
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 с этим.
Здесь поддерживается JSFiddle, показывающий, что он ненадлежащим образом ждет в IE7 и 8 (опять же не протестирован в IE6).
Перед исправлением: http://jsfiddle.net/PFWmS/
После исправления выше: http://jsfiddle.net/PFWmS/7