Обновление:
Эта ошибка была подтверждена как минимум двумя другими. Даже если вы не читаете мой полный пост - если вы читаете это и используете JQuery 1.3.1, тогда прекратите использовать его , если вы полагаетесь на любые обработчики, которые вы хотите выполнить, когда DOM завершен, но до загрузки изображений страницы.
Update2 : Спасибо Tom (идентификатор пользователя 20!) За размещение ссылки на тикет на трекере ошибок jQuery.
Обновление 3 - 2009/01/28: Проблема была правильно решена (для тех, для кого возврат к 1.2.6 невозможен). Для тех, кто в настоящее время использует 1.3.1 и нуждается в немедленном исправлении, вы можете прочитать принятый ответ ниже для направления. Спасибо Джон.
Я только что обновился до JQuery 1.3.1, и мне потребовалось несколько часов, чтобы понять, что моя любимая
$(function( ) { ... }
Синтаксис
теперь ожидал загрузки всей страницы (включая изображения) перед выполнением тела функции. Я видел странное поведение при попытке интегрировать меню Yahoo. (К счастью, у меня были медленные загрузки изображений на моей странице, что заставило меня осознать проблему)!
Я сделал тестовый файл, потому что понял, что происходит что-то более сложное, но у меня все еще были те же симптомы, даже с этим простым файлом.
<head>
<script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.3.1/jquery.min.js"></script>
<script>
$(function() {
alert("Ready");
});
</script>
</head>
<body>
<img src="<PATH_TO_DYNAMIC_IMAGE>_1.jpg" />
<img src="<PATH_TO_DYNAMIC_IMAGE>_2.jpg" />
<img src="<PATH_TO_DYNAMIC_IMAGE>_3.jpg" />
<img src="<PATH_TO_DYNAMIC_IMAGE>_4.jpg" />
</body>
Разные версии JQuery дали разные результаты:
- В версии 1.2.6 происходит то, что окно оповещения отображается мгновенно, а затем я вижу загружаемые изображения позади него (ожидаемое и задокументированное поведение).
- Что происходит в версии 1.3.1, так это то, что все изображения загружаются, и только после этого появится окно с предупреждением.
Что происходит! Это новая функция (не могу представить почему) или ошибка?
Важно: Это кажется проблемой только в IE, а не в firefox
Извините, у меня нет файла динамического изображения, который был бы публично доступен, чтобы другим было легче это увидеть. Если вы хотите проверить это, я предлагаю использовать большой файл изображения, выбранный случайным образом из изображений Google, и очистить кэш.