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

HTML Discussion :

Affichage de div si il y a une image existante à distant


Sujet :

HTML

  1. #1
    Membre du Club
    Profil pro
    Inscrit en
    Septembre 2008
    Messages
    202
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Septembre 2008
    Messages : 202
    Points : 60
    Points
    60
    Par défaut Affichage de div si il y a une image existante à distant
    Bonjour à tous,

    je viens vers vous pour vous demandé votre expertise sur ce sujets.

    J’aimerai affiché une div, la div events si seulement si le contenu de cette div contient une image distante bien existence
    alors on affiche dans mon fichier html la div avec son image + url.

    si l'image en question n'existe pas sur internet, alors cette div ne dois pas existé dans mon fichier html

    c'est possible de faire ça en html/css limite javascript?

    j’espère que j'ai était un peux clair

    voici mon code html/css

    Code css : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    #events {
    	display:block;
    	background-color: #F00;
    	width:320px;
    	height:50px;
    	margin-bottom:10px;
    }
    #content {
    	display:block;
    	float:left;
    	background-color: #efefef;
    	width:320px;
    	height:480px;
    }
    Code html : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    <div id="events"> 
    <a href="#"><img src="image.jpg" width="320" height="50" border="0"></a> 
    </div>
    <div id="content">
    </div>

    merci et bonne journée

  2. #2
    Membre du Club
    Profil pro
    Inscrit en
    Septembre 2008
    Messages
    202
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Septembre 2008
    Messages : 202
    Points : 60
    Points
    60
    Par défaut
    Re bonjour, j'ai essayé de cherché sur internet, j'ai trouvé cette solution pour le moment en javascript
    je ne sais pas si c'est propre pouvez vous voir svp?

    Merci

    code css:

    Code css : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    #events {
    	display:block;
    	background-color: #F00;
    	width:320px;
    	height:50px;
    	margin-bottom:10px;
    }
    #content {
    	display:block;
    	float:left;
    	background-color: #efefef;
    	width:320px;
    	height:480px;
    }

    code javascript:

    Code javascript : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    var myVerifImage = new Image();
    myVerifImage.src="http://www.url.be/200.jpg";
    if ( myVerifImage.complete){
    	document.write('<div id="events"><a href="#"><img src="http://www.url.be/200.jpg" width="320" height="50" border="0"></a></div>');
    } else {
            myVerifImage.src;
    }

    code html:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    <div id="content">
    </div>

  3. #3
    Membre actif Avatar de jisig
    Homme Profil pro
    null
    Inscrit en
    Avril 2014
    Messages
    146
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Indonésie

    Informations professionnelles :
    Activité : null

    Informations forums :
    Inscription : Avril 2014
    Messages : 146
    Points : 273
    Points
    273
    Par défaut Yes
    Bonsoir,

    À partir du moment où tu ne peux pas utiliser un langage serveur, personnellement ça me semble suffisamment propre.

    Jisig.
    Même une feuille de papier est plus légère si on la porte à deux.

  4. #4
    Modérateur

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

    Informations forums :
    Inscription : Janvier 2011
    Messages : 16 950
    Points : 44 081
    Points
    44 081
    Par défaut
    Bonjour,
    Citation Envoyé par IVIedia
    (...)c'est possible de faire ça en html/css limite javascript?
    en HTML/CSS non, en javascript effectivement.


    Citation Envoyé par jisig
    (...)personnellement ça me semble suffisamment propre.
    navré de te décevoir jisig mais la solution présentée et des plus sale
    Comprendre document.write() en JavaScript.

    Il me semble préférable d'utiliser les événements onload-onerror liés aux IMG pour tester si le chargement c'est bien déroulé.
    - tu crées ton conteneur comme si aucune erreur ne devait se produire
    - si une erreur au chargement se produit tu supprimes ce conteneur

    Il ne reste plus qu'à gérer ces deux cas au travers des événements
    Code javascript : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    var image = new Image();
    image.onload = function(){
      var oDest = document.getElementById('events');
      oDest.firstChild.appendChild( this);
    };
    image.onerror = function(){
      alert('failed to load image');   // a SUPPRIMER bien sûr en production
      var oDest = document.getElementById('events');
      oDest.parentNode.removeChild( oDest);
    };
    image.src="http://www.developpez.net/template/images/logo.png";
    j'attirre quand même l'attention sur au moins deux points

    point #1 : le code HTML lié à cette exemple sera de la forme
    Code html : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    <div id="content">
      <div id="events"><a href="#"></a></div> <!-- mettre tout à la suite pour une meilleur compatibilité browser -->
    </div>

    point #2 : mettre ce script en fin de fichier pour être sûr que le chargement de l'image ne se termine pas avant la création des éléments dans le DOM, on ne sait jamais!. (possibilité également de passer par un ajout sur le load du document).

    exemple complet
    Code html : 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
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    <!DOCTYPE html>
    <html lang="fr">
    <head>
    <meta charset="UTF-8">
    <title>Chargement image</title>
    <style>
    #events {
        display:block;
        background-color:#F00;
        width:320px;
        height:50px;
        margin-bottom:10px;
    }
    #content {
        display:block;
        float:left;
        background-color:#efefef;
        width:320px;
        height:480px;
    }
    #events img {
        width:320px;
        height:50px;
        border: 0;
    }
    </style>
    </head>
    <body>
    <div id="content">
      <div id="events"><a href="#"></a></div> <!-- mettre tout à la suite pour une meilleur compatibilité browser -->
    </div>
    </body>
    <script>
    var image = new Image();
    image.onload = function(){
      var oDest = document.getElementById('events');
      oDest.firstChild.appendChild( this);
    };
    image.onerror = function(){
      alert('failed to load image')
      var oDest = document.getElementById('events');
      oDest.parentNode.removeChild( oDest);
    };
    image.src="http://www.developpez.net/template/images/logo.png";
    </script>
    </html>
    modifie le nom de l'image pour le test.

  5. #5
    Membre actif Avatar de jisig
    Homme Profil pro
    null
    Inscrit en
    Avril 2014
    Messages
    146
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Indonésie

    Informations professionnelles :
    Activité : null

    Informations forums :
    Inscription : Avril 2014
    Messages : 146
    Points : 273
    Points
    273
    Par défaut Merci NoSmoking
    Bonjour,

    Merci, bien lu et compris totalement ! ^-^

    Jisig.
    Même une feuille de papier est plus légère si on la porte à deux.

  6. #6
    Membre du Club
    Profil pro
    Inscrit en
    Septembre 2008
    Messages
    202
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Septembre 2008
    Messages : 202
    Points : 60
    Points
    60
    Par défaut
    Bonsoir,

    Merci NoSmoking ça fonctionne très bien le code, est facile à comprendre,
    de plus avec votre solution je sais faire une intégration facile pour un support mobile

    merci encore une fois, je met le post en mode résolu

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

Discussions similaires

  1. Réponses: 1
    Dernier message: 02/09/2010, 18h11
  2. creer un div et le positionner devant une image
    Par calitom dans le forum Général JavaScript
    Réponses: 1
    Dernier message: 19/03/2009, 12h02
  3. DIV auto-ajustable autour d'une image + 2 moitiés cliquables ?
    Par budhax dans le forum Mise en page CSS
    Réponses: 3
    Dernier message: 18/10/2008, 23h06
  4. div de la hauteur d'une image
    Par la.sophe dans le forum Balisage (X)HTML et validation W3C
    Réponses: 3
    Dernier message: 23/03/2006, 16h07
  5. affichage d'un calques (?) au survol d'une image.
    Par Space Cowboy dans le forum Général JavaScript
    Réponses: 3
    Dernier message: 04/09/2005, 15h38

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