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

JavaScript Discussion :

[DOM] Ordonnancer le chargement d'images


Sujet :

JavaScript

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre Expert Avatar de franculo_caoulene
    Profil pro
    Inscrit en
    Octobre 2003
    Messages
    2 880
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2003
    Messages : 2 880
    Par défaut [DOM] Ordonnancer le chargement d'images
    Salut,

    Afin d'optimiser l'affichage d'un site je precharge des images. Ca ne m'est plus forcément très utile, c'est donc pour ma culture technique. Je me demande comment gérer complètement le chargement des images.
    Admettons que j'ai une image plutôt lourde à charger (grosseImage.jpg) et je souhaite la charger en priorité. Est-il possible d'empêcher les autres images de se charger avant grosseImage.jpg. J'ai pas trouvé...

  2. #2
    Expert confirmé
    Avatar de le_chomeur
    Profil pro
    Développeur informatique
    Inscrit en
    Février 2006
    Messages
    3 653
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Février 2006
    Messages : 3 653
    Par défaut
    Salut
    La méthode la plus sure pour charger les images les unes après les autres est de créer un tableau javascript contenant les url , puis d'utiliser une méthode de load par exemple :

    var MesImgs = new Array(...);
    var index = 0;
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
    function loadMyImg(){
    if(MesImgs[index].complete){
    if(index <= MesImgs.length){
    index++
    window.setTimeout( "loadMyImg()", '50' );
    }
    }
    else{
    window.setTimeout( "loadMyImg()", '50' );
    }
    }
    voila de tete , tu peux également utiliser la gestion des erreurs de chargement d'image ( onerror il me semble )
    Bon courage

  3. #3
    Membre Expert Avatar de franculo_caoulene
    Profil pro
    Inscrit en
    Octobre 2003
    Messages
    2 880
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2003
    Messages : 2 880
    Par défaut
    Je fais déjà quelque chose dans le genre :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    var imgload = preload(['img/fond.png',
    			'img/fondconteneur.png',
    			'img/logo.png',
    			'img/separateur.png',
    			'img/intro.png']);
    var preload = function(im) {
    	var imgload = new Array();
    	for (i=0; i<im.length; i++) {
    		imgload[i] = new Image();
    		imgload[i].src = im[i];
    	}
    	return imgload;
    }
    Seulement je le fais après le chargement du DOM et du CSS. Des images sont donc déjà chargées avant l'exécution du mon script.

  4. #4
    Expert confirmé
    Avatar de le_chomeur
    Profil pro
    Développeur informatique
    Inscrit en
    Février 2006
    Messages
    3 653
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Février 2006
    Messages : 3 653
    Par défaut
    en fait il manque une étape :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    var preload = function(im) {
    	var imgload = new Array();
    	for (i=0; i<im.length; i++) {
    		imgload[i] = new Image();
    		imgload[i].src = im[i];
    	}
    	return imgload;
    }
    tu t'occupes de faire une boucle créant toute les images, mais a aucun moment tu n'attends le chargement complet de chaque image , de plus tu peux une fois ces images chargées, les envoyés dans leur position respectives via une autre fonction ...

    En gros :
    - remplacer les images par UNE SEUL temporaire, et au fur et a mesure qu'elle sont complètement chargées , remplacé les temporaires par les définitives, est ce que j'ai été assez clair ?

    sinon je t'enverais un script complet

  5. #5
    Membre Expert Avatar de franculo_caoulene
    Profil pro
    Inscrit en
    Octobre 2003
    Messages
    2 880
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2003
    Messages : 2 880
    Par défaut
    Citation Envoyé par le_chomeur Voir le message
    tu t'occupes de faire une boucle créant toute les images, mais a aucun moment tu n'attends le chargement complet de chaque image
    Tu insinues que la boucle continue sans finir de charger l'image et donc finalement mes images ne sont pas chargées?
    Citation Envoyé par le_chomeur Voir le message
    de plus tu peux une fois ces images chargées, les envoyés dans leur position respectives via une autre fonction ...
    En gros :
    - remplacer les images par UNE SEUL temporaire, et au fur et a mesure qu'elle sont complètement chargées , remplacé les temporaires par les définitives, est ce que j'ai été assez clair ?
    Pas compris... en effet!

    Mon problème de base, je le rappelle ou le définis mieux, est que des images définies dans le css ou le html se chargent avant le préchargement javascript. Aujourd'hui, mon javascript s'exécute après le chargement du DOM et laisse donc le temps à certaines images de se charger. Y a-t-il un moyen de contrôler ça de A à Z?

  6. #6
    Expert confirmé
    Avatar de le_chomeur
    Profil pro
    Développeur informatique
    Inscrit en
    Février 2006
    Messages
    3 653
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Février 2006
    Messages : 3 653
    Par défaut
    je te montrerais demain ( journée de boulot finit ) mais :



    Citation:
    Envoyé par le_chomeur Voir le message
    tu t'occupes de faire une boucle créant toute les images, mais a aucun moment tu n'attends le chargement complet de chaque image
    Tu insinues que la boucle continue sans finir de charger l'image et donc finalement mes images ne sont pas chargées?
    oui

Discussions similaires

  1. [DOM] Chargement d'image avec progess bar
    Par seb.49 dans le forum Général JavaScript
    Réponses: 7
    Dernier message: 08/10/2007, 08h56
  2. [xhtml][css] chargement d'image sur IE
    Par killgors dans le forum Mise en page CSS
    Réponses: 4
    Dernier message: 23/08/2005, 20h37
  3. chargement d'image
    Par bakonu dans le forum AWT/Swing
    Réponses: 2
    Dernier message: 20/06/2005, 22h40
  4. [JLabel] Chargement d'image dans une JFrame
    Par mr.t dans le forum Composants
    Réponses: 10
    Dernier message: 27/01/2005, 18h32
  5. Réponses: 21
    Dernier message: 29/04/2004, 15h45

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