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 :

Preload de beaucoup d'image


Sujet :

JavaScript

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Développeur Web
    Inscrit en
    Décembre 2008
    Messages
    16
    Détails du profil
    Informations personnelles :
    Âge : 42

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Décembre 2008
    Messages : 16
    Par défaut Preload de beaucoup d'image
    Bonjour à tous,

    Je me tourne vers vous afin de m'aider sur un problème avec le navigateur IE.
    Je cherche à faire une barre de chargement qui vérifie l'avancée du chargement d'un tableau d'image.

    Voici le code :

    Fichier index.php
    Code php : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    <script type='text/javascript'>
    var nbr_image = <?php echo sizeof($listeImage); ?>;
    var liste_image= new Array(nbr_image);
    var nbr_image_dl = 0;
    <?php
    for($i=0; $i<sizeof($listeImage); $i++){
        echo 'liste_image['.$i.'] = "'.$listeImage[$i].'";';
    }
    ?>
     
    for(var i=0; i<nbr_image; i++){
    	var image_temp = precharger_image(liste_image[i]);
    	image_temp.onload = function() {
    		update();
    	}
    }			
    </script>

    Fichier JS

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    function update(){
    	 nbr_image_dl++;
     
    	 var ratio = (nbr_image_dl*100)/nbr_image;
    	 if(ratio< 10){ratio ="00"+ Math.round(ratio);}
    	 else if(ratio< 100){ratio ="0"+ Math.round(ratio);}
    	 else {ratio = 100; }
     
    	 document.getElementById('loading').innerHTML =ratio+"%";
    	 document.getElementById('barre').style.width = ((nbr_image_dl*120)/nbr_image)+"px";
     
       if(nbr_image_dl == nbr_image){
    	 alert("Fin dl");
       }
    }
     
    function precharger_image(url) {
    	var img = new Image();
       img.src=url;
       return img;
    }
    Ce code fonctionne sous FF, chrome et Safari.
    Seul IE 6 et IE7 me bloque en restant sur 13% ou 36%, c'est un peu aléatoire.

    SI certain on une piste à ce sujet.
    Merci

  2. #2
    Membre averti
    Développeur Web
    Inscrit en
    Décembre 2008
    Messages
    16
    Détails du profil
    Informations personnelles :
    Âge : 42

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Décembre 2008
    Messages : 16
    Par défaut
    J'avance dans ma recherche du problème.

    Cela viendrait donc du fait que sous IE, le onload rentre en conflit lorsque les images sont déjà présentes dans le cache du navigateur.

    J'ai trouvé une solution sur internet ou il s'agit de faire une opération assez simple : inverser 2 lignes de codes mais qui ne fonctionne toujours pas dans mons cas :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    monImage = new Image;
    monImage.src = 'images/bla.jpg';
    monImage.onload = new Function("window.alert('image chargée !");
    
    devient
    
    monImage = new Image;
    monImage.onload = new Function("window.alert('image chargée !");
    monImage.src = 'images/bla.jpg';

  3. #3
    Membre averti
    Développeur Web
    Inscrit en
    Décembre 2008
    Messages
    16
    Détails du profil
    Informations personnelles :
    Âge : 42

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Décembre 2008
    Messages : 16
    Par défaut
    Il suffit de faire une condition avec l'option "complete"

    Si l'image est "complete, dans ce cas on ne onload pas car déjà présente dans le cache, ce qui fait bugger IE, sinon on onload :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    if(!image_temp.complete){ // Pas dans le cache
    	image_temp.onload = function() {
    		....	
    	}
    }
    else{
    	...
    }
    Je pense que cela pourra aidé d'autre personne !

  4. #4
    Invité
    Invité(e)
    Par défaut
    jour

    a savoir

  5. #5
    Rédacteur

    Avatar de Bovino
    Homme Profil pro
    Développeur Web
    Inscrit en
    Juin 2008
    Messages
    23 647
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2008
    Messages : 23 647
    Billets dans le blog
    20
    Par défaut
    Comme expliqué dans la FAQ
    Pas de question technique par MP !
    Tout le monde peut participer à developpez.com, vous avez une idée, contactez-moi !
    Mes formations video2brain : La formation complète sur JavaScriptJavaScript et le DOM par la pratiquePHP 5 et MySQL : les fondamentaux
    Mon livre sur jQuery
    Module Firefox / Chrome d'intégration de JSFiddle et CodePen sur le forum

  6. #6
    Membre averti
    Développeur Web
    Inscrit en
    Décembre 2008
    Messages
    16
    Détails du profil
    Informations personnelles :
    Âge : 42

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Décembre 2008
    Messages : 16
    Par défaut
    Oui merci Bovino.
    Je n'avais pas visité la FAQ, seulement effectué des recherches sur le forum

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Comment stocker beaucoup d'images ?
    Par acid_wily dans le forum VB 6 et antérieur
    Réponses: 6
    Dernier message: 14/04/2009, 13h18
  2. Stockage beaucoup d'images
    Par l.mnu dans le forum C#
    Réponses: 13
    Dernier message: 06/01/2009, 09h43
  3. tilelist affiche de beaucoup d'image
    Par greatalain dans le forum Flex
    Réponses: 2
    Dernier message: 08/12/2007, 13h38
  4. Iframe ou pas iframe pour beaucoup d'images a afficher ?
    Par guy2004 dans le forum Balisage (X)HTML et validation W3C
    Réponses: 6
    Dernier message: 09/07/2007, 11h59
  5. Gif animé avec beaucoup d'images
    Par vinzzzz dans le forum Imagerie
    Réponses: 3
    Dernier message: 19/06/2007, 12h28

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