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 :

.load() ne charge pas l'image


Sujet :

jQuery

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Avril 2011
    Messages
    55
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2011
    Messages : 55
    Par défaut .load() ne charge pas l'image
    Bonjour,

    J'utilise le code suivant, qui fonctionne sans problème :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $('.monimage').attr({src: src, alt: alt}).fadeIn();
    L'image est correctement affichée, à l'endroit voulu.

    J'aimerais néanmoins qu'elle ne soit affichée que lorsqu'elle est entièrement chargée. J'ai donc remplacé le code précédent par ceci :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    var img = new Image();
    $(img).load(function() {
    	$('.monimage').attr({src: src, alt: alt}).fadeIn();
    }).attr('src', src);
    Et là, c'est le drame : l'image ne s'affiche plus !

    Si quelqu'un voulait voir le résultat en ligne, il s'agit du 3ème carousel (sous le titre "C'est vous qui le dites !") sur cette page, où l'on voit que le title des images est affiché, mais pas l'image elle-même.

    Quelqu'un comprend-il pourquoi ? Merci de votre aide !

  2. #2
    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 : 55
    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
    Si l'image est déjà dans le cache du navigateur, l'événement load n'est pas forcément déclenché, il faut coupler avec un test sur l'attribut complete d'un objet image.
    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

  3. #3
    Membre averti
    Profil pro
    Inscrit en
    Avril 2011
    Messages
    55
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2011
    Messages : 55
    Par défaut
    Non, non, l'image n'est pas dans le cache : cache vidé, premier chargement...

    Néanmoins, pour vérifier, comment pourrais-je "coupler avec un test sur l'attribut complete de l'objet image" ?

  4. #4
    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 : 55
    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
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    var image = new Image();
    image.src = src;
    if(image.complete){
        // traitement
    }
    else{
        image.onload = function(){
            // traitement
        };
    }
    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

  5. #5
    Membre averti
    Profil pro
    Inscrit en
    Avril 2011
    Messages
    55
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2011
    Messages : 55
    Par défaut
    Mmmm... Je ne suis pas sûr de bien comprendre (j'apprends).

    J'ai mis le code suivant :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    var img = new Image();
    if ($(img).complete) {
    	$('.monimage').attr({src: src, alt: alt}).fadeIn();
    } else {
    	$(img).load(function() {
    		$('.monimage').attr({src: src, alt: alt}).fadeIn();
    	}).attr('src', src);
    }
    Mais ça ne change rien : l'image ne s'affiche toujours pas...

  6. #6
    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 : 55
    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
    Parce que tu passes par jQuery, qui est inutile ici.
    $(img) correspond à un objet jQuery, pas à un objet du DOM, or un objet jQuery ne possède pas de propriété complete.
    Ensuite, tu ne peux pas tester la propriété complete si tu n'as pas attribué de src à ton image.
    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

Discussions similaires

  1. [Débuter] L'objet image ne charge pas les images
    Par Avatar36 dans le forum Qt Quick
    Réponses: 3
    Dernier message: 02/10/2014, 14h29
  2. [AJAX] load() ne charge pas ma requete sql
    Par traderjean dans le forum AJAX
    Réponses: 0
    Dernier message: 08/01/2012, 10h56
  3. [1.x] sfForkedDoctrineApply ne charge pas mes images
    Par etoileweb dans le forum Symfony
    Réponses: 0
    Dernier message: 12/11/2010, 17h12
  4. IMG_Load ne charge pas toutes les images
    Par v4np13 dans le forum SDL
    Réponses: 7
    Dernier message: 07/04/2007, 22h38

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