Mise à jour: Ce bug a été confirmé par au moins deux autres personnes. Même si vous ne lisez pas mon article complet - si vous lisez ceci et utilisez JQuery 1.3.1, alors arrêtez de l'utiliser si vous comptez sur les gestionnaires que vous voulez exécuter lorsque le DOM est terminé mais avant les images de la page avoir chargé.JQuery attend le chargement des images avant l'exécution de document.ready
Update2: Merci à Tom (id utilisateur 20!) Pour l'affichage du link to the ticket sur le bug tracker jQuery.
Update3 - 2009/01/28: Le problème a été résolu correctement (pour ceux pour qui revenir à 1.2.6 n'est pas une option). Pour toute personne utilisant actuellement 1.3.1 et ayant besoin d'une correction immédiate, vous pouvez lire la réponse acceptée ci-dessous pour la direction. Merci John.
Je viens de mettre à JQuery 1.3.1, et il m'a fallu plusieurs heures pour se rendre compte que mon bien-aimé
$(function() { ... }
syntaxe
attendait maintenant la page entière charge (y compris les images) avant d'exécuter le corps de la fonction. Je voyais strange behavior en essayant d'intégrer les menus de Yahoo. (Heureusement j'ai eu quelques images de chargement lent sur ma page qui m'a fait prendre conscience du problème)!
J'ai fait un fichier de test parce que je pensais que quelque chose de plus complexe se passait, mais j'avais toujours les mêmes symptômes même avec ce simple fichier.
<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>
Différentes versions de JQuery ont des résultats différents:
- Qu'est-ce qui se passe dans la version 1.2.6 de cette boîte d'alerte est affichée instantanément, puis je vois les images de chargement derrière (prévu et comportement documenté) .
- Ce qui se passe dans la version 1.3.1 est que les images se chargent toutes et seulement alors la boîte d'alerte sera affichée.
Que se passe-t-il! Est-ce une nouvelle fonctionnalité (je ne peux pas imaginer pourquoi) ou un bug?
Important: Cela ne semble être un problème dans IE et non firefox
Désolé, je n'avez pas un fichier d'image dynamique qui est accessible au public pour le rendre plus facile pour les autres de voir. Si vous voulez le tester, je suggère d'utiliser un grand fichier d'image pris au hasard à partir de google images et vider votre cache.
Je rencontre le même problème avec la version la plus récente de jQuery. Veuillez garder cette question à jour en fonction des commentaires que vous recevez. – Tom
@tom certainement. J'ai envoyé un courriel et twitté John Resig qui a initialement écrit JQuery. Personnellement, je ne suis pas pressé pour un bug (je suis de retour à 1.2.6), mais ils ont vraiment besoin de prendre cette version comme la version publiée sur jquery.com! –
@Simon - J'ai soumis un ticket cet après-midi à propos de ce problème. Ah, les joies du logiciel libre;) Ils vont le faire réparer assez tôt, j'en suis sûr - de bons développeurs dans l'équipe - mais ça craint pour moi parce que je ne peux pas revenir à 1.2.6 = T – Tom