IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

jQuery Discussion :

les images chargées via des .html() semblent être toutes traités en fin de traitement DOM


Sujet :

jQuery

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé
    Profil pro
    Inscrit en
    Mai 2004
    Messages
    270
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2004
    Messages : 270
    Par défaut les images chargées via des .html() semblent être toutes traités en fin de traitement DOM
    Bonjour,

    j'ai un document qui fait une trentaine de traitements et de remplacements HTML.

    Le traitement est un peu long mais c'est normal.

    J'en ai profité pour mettre des logs qui me confirment à chaque tour de boucle que le DOM a bien été impacté par la fonction .html() :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    console.log('image url '+imgUrl2);					
    $('#'+thisId).html('<img src="'+imgUrl2+'" style="width: 400px; height: 280px;"   />'); 					
    console.log($('#'+thisId).html());
    Donc à chaque tour de boucle, je m'attendrais à ce qu'une image de + apparaisse mais non.

    Voici ce qu'il se passe :
    - à chaque tour de boucle, la console est bien augmenté du log prévu ci-dessus qui semble confirmer que le DOM a été impacté avec l'image à charger
    - au bout des 30 tours de boucle, l'ensemble des images sont appelées d'après l'onglet network et apparaissent aussitôt (pour le coup ça va très vite).

    Ce que j'aimerais :
    - qu'à chaque tour de boucle, l'image appelée soit chargée.

    Voyez-vous une raison à cela ?

    Merci,

  2. #2
    Membre extrêmement actif Avatar de psychadelic
    Profil pro
    Inscrit en
    Mai 2010
    Messages
    2 532
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2010
    Messages : 2 532
    Par défaut
    simple,
    tout ça se passe dans une logique de taches asynchrones, chaque chargement d'image est une tache à part qui s'exécute de son coté, mais le système n'attend pas qu'une tache soit terminé pour en lancer une autre.
    Il y a aussi des priorités : tout ce qui concerne la structure de la page à une plus grande priorité que pour la reconstitution des paquets composant chaque image.

    Si tu veux controler l'ordre de traitement de ces multiples taches, alors tu dois utiliser le système des promesses https://developer.mozilla.org/fr/doc..._les_promesses

    mais tu va rencontrer un problème pour coder une boucle de promesses. Il y a un bout de code qui devrait t'aider à résoudre ces questions : https://www.developpez.net/forums/d1.../#post10098264

  3. #3
    Rédacteur/Modérateur

    Avatar de SpaceFrog
    Homme Profil pro
    Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Bidouilleur SharePoint
    Inscrit en
    Mars 2002
    Messages
    39 659
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 75
    Localisation : Royaume-Uni

    Informations professionnelles :
    Activité : Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Bidouilleur SharePoint
    Secteur : Industrie

    Informations forums :
    Inscription : Mars 2002
    Messages : 39 659
    Billets dans le blog
    1
    Par défaut
    Ton console log ne présage pas du chargement de l'image, totu au mieux il indique l'insertion de la balise img dans le DOM.
    Fais un console.log sur le onload de l'image, tu auras alors l'indication de la fin de chargement de l'image.

    Une autre possibilité est de faire un preloader d'images...
    Ma page Developpez - Mon Blog Developpez
    Président du CCMPTP (Comité Contre le Mot "Problème" dans les Titres de Posts)
    Deux règles du succès: 1) Ne communiquez jamais à quelqu'un tout votre savoir...
    Votre post est résolu ? Alors n'oubliez pas le Tag

    Venez sur le Chat de Développez !

  4. #4
    Modérateur

    Avatar de NoSmoking
    Homme Profil pro
    Inscrit en
    Janvier 2011
    Messages
    17 209
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Isère (Rhône Alpes)

    Informations forums :
    Inscription : Janvier 2011
    Messages : 17 209
    Par défaut
    Bonjour,
    n'oublions pas en plus que le moteur de rendu n'est pas prioritaire et que ce n'est pas parce que le DOM est changé que l'affichage se fera dans la foulée.

Discussions similaires

  1. Réponses: 2
    Dernier message: 23/01/2013, 12h16
  2. [Struts] Grouper les html:errors
    Par SrK dans le forum Struts 1
    Réponses: 4
    Dernier message: 02/05/2006, 11h43
  3. [HTML] Peut-être trop de cellule dans ma ligne ??
    Par LE NEINDRE dans le forum Balisage (X)HTML et validation W3C
    Réponses: 15
    Dernier message: 21/02/2006, 15h54
  4. [Struts] Créer un id avec les <html:text ..>
    Par jak0 dans le forum Struts 1
    Réponses: 3
    Dernier message: 18/05/2005, 14h19
  5. Est-ce que les fichiers .obj sont tous les mêmes?
    Par Bubonik software dans le forum Langages de programmation
    Réponses: 2
    Dernier message: 30/12/2003, 21h04

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo