47 votes

JQuery est en attente pour les images à charger avant l'exécution de document.prêt

Mise à jour: Ce bogue a été confirmée par au moins deux autres personnes. Même si vous n'avez pas lu mon post complet - si vous êtes de lire ceci et à l'aide de JQuery 1.3.1 puis cesser de l'utiliser si vous êtes en s'appuyant sur tous les gestionnaires que vous souhaitez exécuter lorsque le DOM est terminée, mais avant de la page images ont chargé.

Update2: Grâce à Tom (id utilisateur 20!) pour poster le lien vers le billet sur le jQuery bug tracker.

Update3 - 2009/01/28: Le problème a été résolu correctement (pour ceux pour qui le retour à 1.2.6 n'est pas une option). Toute personne qui aide 1.3.1 et avoir besoin d'une solution immédiate, vous pouvez lire la accepté de répondre ci-dessous pour la direction. Merci John.


Je viens de mettre à JQuery 1.3.1, et il m'a fallu plusieurs heures pour réaliser que mon bien-aimé

$(function( ) {  ... }

la syntaxe est maintenant à attendre que la page se charge (y compris les images) avant d'exécuter le corps de la fonction. J'ai été voir un comportement étrange lors de tentatives d'intégration de Yahoo menus. (Heureusement que j'avais une certaine lenteur de chargement des images sur ma page qui m'a fait prendre conscience du problème)!

J'ai fait un fichier de test car j'ai pensé que quelque chose de plus complexe qui se passait, mais j'ai toujours eu 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>

Les différentes versions de JQuery eu des résultats différents:

  • Ce qui se passe dans la version 1.2.6 est que la boîte d'alerte s'affiche instantanément et puis je vois les images de chargement derrière elle (prévu et comportement documenté).
  • Ce qui se passe dans la version 1.3.1, c'est que les images de toutes les charges et alors seulement, la boîte d'alerte sera affiché.

Ce qui se passe! Est-ce une nouvelle fonctionnalité (je ne peux pas imaginer pourquoi) ou un bug?

Important: Ce ne semble être un problème dans IE et pas firefox

Désolé je n'ai pas une image dynamique de fichier qui est accessible au public pour le rendre plus facile pour les autres de voir cela. Si vous voulez le tester, je vous conseille d'utiliser un grand fichier image sélectionné au hasard à partir de google images et de vider votre cache.

57voto

John Resig Points 24061

Cela était dû à jQuery bugs #2614 et #3880 - il y avait eu des problèmes avec le code prêt à l'emploi dans IE dans 1.2.6 et de 1,3 - et maintenant, une autre série de problèmes dans 1.3.1.

Un débat plus large peut être trouvé ici:
http://groups.google.com/group/jquery-dev/browse_thread/thread/3abf45d3fd4d50fc

Et le billet lié à la question peut être trouvée ici (si vous trouvez d'autres problèmes avec le corriger, s'il vous plaît ré-ouvrir le billet et le post ci-dessus jquery-dev fil):
http://dev.jquery.com/ticket/3988

Je viens de débarqué un correctif pour ce SVN rev 6170.

J'ai juste poussé un nouveau tous les soirs que vous pouvez utiliser jusqu'à ce 1.3.2 finale, il vient:
http://code.jquery.com/nightlies/jquery-2009-01-28.js

Désolé du retard pour obtenir un correctif hors - était en déplacement cette semaine.

4voto

Crescent Fresh Points 54070

Il ya certaines choses que tout ne peut pas être l'objet de tests unitaires. Juste confirmé dans IE6+7 et 1.3.1. Saint-enfer, ce qu'est une énorme régression.

Alors, avez-vous le temps de le signaler? Viens de vérifier et il n'est pas un bogue connu pour 1.3.1.

4voto

Tom Points 5872

Voici une mise à jour du billet que j'ai soumis. Il me semble que si @Webdawson a joint un exemple de page sur le billet.

2voto

Pim Jager Points 20018

Vous devez présenter cela comme un bug sur le jQuery site, elles sont toujours bug-test 1.3

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X