2009-01-25 1 views
46

Update: Эта ошибка была подтверждена по крайней мере двух других. Даже если вы не прочитаете мой полный пост - если вы читаете это и используете JQuery 1.3.1, то прекратите использовать его, если вы полагаетесь на любые обработчики, которые вы хотите выполнить, когда DOM будет заполнен, но до изображений страницы загружены.JQuery ждет изображений для загрузки перед выполнением document.ready

Update2: Благодаря Tom (идентификатор пользователя 20!) Для размещения в link to the ticket на багтрекер JQuery.

Update3 - 2009/01/28: Проблема была правильно решена (для тех, для которых возвращение к 1.2.6 не является вариантом). Для тех, кто в настоящее время использует 1.3.1 и нуждается в немедленном исправлении, вы можете прочитать принятый ответ ниже для направления. Спасибо, Джон.


Я просто повышен до JQuery 1.3.1, и мне потребовалось несколько часов, чтобы понять, что моя любимая

$(function() { ... } 

синтаксис теперь ждет вся страница для загрузки (включая изображения) перед выполнением тело функции. Я видел strange behavior, пытаясь интегрировать меню 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, и очистить кеш.

+0

Я испытываю ТОЧНУЮ ту же проблему с самой последней версией jQuery. Пожалуйста, сохраните этот вопрос на основе любых отзывов, которые вы получите. – Tom

+0

@tom определенно будет. я отправил по электронной почте и щебетал john resig, который изначально написал JQuery. я лично не тороплюсь за исправление (я вернулся к 1.2.6), но им действительно нужно взять эту версию как выпущенную версию на jquery.com! –

+0

@Simon. Сегодня я отправил билет по этой проблеме. Ах, радости бесплатного программного обеспечения;) Они скоро исправят это, я уверен - хорошие разработчики в команде, но это отстой для меня, потому что я не могу вернуться обратно к 1.2.6 = T – Tom

ответ

57

Это было связано с JQuery ошибок # 2614 и # 3880 - были определенные проблемы с готовым кодом в IE в 1.2.6 и в 1.3 - и теперь . другой набор проблем в п.1.3.1

большего обсуждение можно найти здесь:
http://groups.google.com/group/jquery-dev/browse_thread/thread/3abf45d3fd4d50fc

И билет, связанный с вопросом, можно найти здесь (если вы найдете дополнительные проблемы с исправлением, пл легкостью повторно открыть билет и опубликовать в выше JQuery-Dev нить):
http://dev.jquery.com/ticket/3988

Я только что приземлился исправить это в SVN оборотов 6170.

я просто толкнул новый каждую ночь, что вы можете использовать до 1.3.2 Окончательный не выходит:
http://code.jquery.com/nightlies/jquery-2009-01-28.js

К сожалению в задержке для получения исправления из - путешествовал на этой неделе.

+15

awesome - Resig to the rescue :) –

+1

Radical! Ты качаешь Джона! –

+0

Большое спасибо, Джон. Это круто. – Tom

4

Есть некоторые вещи, которые просто не могут быть протестированы. Просто подтверждено в IE6 + 7 и 1.3.1. Святой ад, какой огромный регресс.

Итак, у вас есть время сообщить об этом? Просто проверено, и это не известная ошибка для 1.3.1.

+0

, если вы уже знаете, где проверить, и вы могли бы сообщить об этом, что было бы здорово. его 4:50 утра для меня и им около ложиться спать! Самое смешное, что я кодирую совершенно новый сайт, и ТОЛЬКО, что я использовал JQuery на данный момент, была эта фундаментальная задача! –

+0

ах и спасибо за то, что я обожаю меня и верю в невероятное :) –

4

Here's an update of the ticket I submitted. Кажется, что @Webdawson приложил образец к билету.

+0

@tom - отлично! вот моя ошибка! Мне нравится гигантский имидж 3 МБ, который они использовали! здорово. спасибо, что позволили мне передать мои сообщения об ошибках через вас. мои дни работы закончились - как только вы начнете, вы не можете остановиться. я разочаровался, когда MS всегда закрывала мои ошибки или исправляла (за исключением ошибок SQL-сервера!) –

3

Да, я добавил пример, его явная ошибка в IE6 & 7 (я не тестировал его в других версиях IE). Кажется, что в версии 1.3.1 появилось много ошибок. :(

Вот пример ссылки: http://www.kollermedia.at/jquery_bug.html

+0

Я бы подумал, что это был вид шоушоппера, который означал, что они снимут 1.3.1 со своего сайта (по крайней мере, как являющийся текущим выпуском). собирается повесить много сайтов для людей или сделать их очень невосприимчивыми. Ну что ж. –

Смежные вопросы