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 :

Taille div dynamique contenant une image (Firefox)


Sujet :

JavaScript

  1. #1
    Nouveau membre du Club Avatar de Periah
    Homme Profil pro
    Chef de projet en SSII
    Inscrit en
    Août 2012
    Messages
    27
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Chef de projet en SSII
    Secteur : Conseil

    Informations forums :
    Inscription : Août 2012
    Messages : 27
    Points : 35
    Points
    35
    Par défaut Taille div dynamique contenant une image (Firefox)
    Bonjour,

    Je souhaite récupérer via javascript la hauteur et la largeur d'une div dynamique qui peut contenir soit du texte, soit une image, soit les deux.

    Si la div ne contient que du texte, pas de problème, j'y arrive en utilisant clientWidth et clientHeight. Par contre, si la div contient une image, cela ne fonctionne plus (sous Firefox) et je ne récupère que la taille du texte (ou 0 s'il n'y a pas de texte). En allant inspecter la div sous Firebug, les valeurs sont correctes...

    Tout fonctionne correctement avec IE et Chrome.

    Comment faire pour récupérer la taille réelle de la div?

    Pour illustrer tout ça, le bout de code qui génère la div :

    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
    22
    23
    var lDiv = document.createElement('div');
     
    document.body.appendChild(lDiv) ;
     
    lDiv.style.backgroundColor = "red" ;
     
    lDiv.style.position = "absolute" ;
    lDiv.style.left = "500px" ;
    lDiv.style.top = "500px" ;
     
    lDiv.innerHTML = '<SPAN style="text-align:left">Vanessa Cortia<BR/><IMG src="./Images/vanessa_cortia.jpg" /><BR />DSI/SEDI</SPAN>' ;
     
    var lResult = {
    	width: lDiv.clientWidth,
    	height: lDiv.clientHeight
    }
     
    trace(true, "offset : " + lDiv.offsetWidth + " / " + lDiv.offsetHeight, "red" ) ;
    trace(true, "direct : " + lDiv.width + " / " + lDiv.height, "red" ) ;
    trace(true, "client : " + lDiv.clientWidth + " / " + lDiv.clientHeight, "red" ) ;
    trace(true, "style : " + lDiv.style.width + " / " + lDiv.style.height, "red" ) ;
    trace(true, "inner : " + lDiv.innerWidth + " / " + lDiv.innerHeight, "red" ) ;
    trace(true, "inner : " + lDiv.scrollWidth + " / " + lDiv.scrollHeight, "red" ) ;
    La fonction trace se contente d'afficher les valeurs sur la div de fond de page.

    Merci d'avance.

  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 : 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
    Points : 91 220
    Points
    91 220
    Billets dans le blog
    20
    Par défaut
    Attends que l'image ait été chargée avant d'en demander les dimensions.

  3. #3
    Nouveau membre du Club Avatar de Periah
    Homme Profil pro
    Chef de projet en SSII
    Inscrit en
    Août 2012
    Messages
    27
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Chef de projet en SSII
    Secteur : Conseil

    Informations forums :
    Inscription : Août 2012
    Messages : 27
    Points : 35
    Points
    35
    Par défaut
    Forcément, dit comme ça, ça parait évident...

    Mais ça m'amène à un autre problème : mon petit bout de code de toute à l'heure est une fonction qui vise à donner la taille affichée d'un bloc HTML (qui est normalement variable et non pas figé comme dans mon exemple).

    La taille renvoyée servant à définir d'autres div qui s'articulent autour.

    Dans cette optique, il faut que je puisse renvoyer mon lResult correct (et avec la taille de l'image) en fin de fonction. Comment puis-je faire pour attendre que l'image se charge et comment puis-je savoir qu'elle est chargée?

  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 : 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
    Points : 91 220
    Points
    91 220
    Billets dans le blog
    20
    Par défaut
    Deux solutions.
    1) Attendre le chargement de l'image (événement onload de la balise <img />).
    Le problème est que cet événement sera appelé de façon asynchrone et va t'obliger à revoir la structure de ton code.

    2) Indiquer les dimensions de l'image dans le code soit en CSS soit à l'aide des attributs width et height.

  5. #5
    Nouveau membre du Club Avatar de Periah
    Homme Profil pro
    Chef de projet en SSII
    Inscrit en
    Août 2012
    Messages
    27
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Chef de projet en SSII
    Secteur : Conseil

    Informations forums :
    Inscription : Août 2012
    Messages : 27
    Points : 35
    Points
    35
    Par défaut
    J'ai mis en place la solution 2.

    Ca fonctionne parfaitement. Merci!

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

Discussions similaires

  1. Centrer un DIV contenant une image de background?
    Par Maitrekou dans le forum Mise en page CSS
    Réponses: 4
    Dernier message: 08/10/2008, 22h48
  2. [ImageMagick] Taille en octet d'une image
    Par Oberown dans le forum Bibliothèques et frameworks
    Réponses: 2
    Dernier message: 28/08/2006, 09h32
  3. [JavaMail] recevoir un mail contenant une image
    Par nicotine002 dans le forum API standards et tierces
    Réponses: 3
    Dernier message: 26/08/2006, 12h38
  4. [Tableaux] Ajouter l'affichage dynamique d'une image
    Par leloup84 dans le forum Langage
    Réponses: 3
    Dernier message: 16/02/2006, 09h14
  5. [CR.NET]Chargement dynamique d'une image
    Par Moah dans le forum SAP Crystal Reports
    Réponses: 8
    Dernier message: 14/12/2004, 11h46

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