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 :

[AJAX] createElement et lightbox


Sujet :

JavaScript

  1. #1
    Membre éprouvé
    Développeur Web
    Inscrit en
    Janvier 2007
    Messages
    83
    Détails du profil
    Informations personnelles :
    Âge : 43

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Janvier 2007
    Messages : 83
    Par défaut [AJAX] createElement et lightbox
    Bonjour à tous,

    j'ai décidé d'utilisé l'excellent script light box, pour afficher les photos présentes sur le site de la société où je travaille.

    Cependant, mon chef d'équipe veut qu'une grande partie du site soit traitée en AJAX. Très bien. Seulement, pour le chargement des photos, j'utilise un createElement, ce qui donne :
    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
    24
    25
    26
    27
     
    <head>
    <script type="text/javascript" src="js/prototype.js"></script>
    <script type="text/javascript" src="js/scriptaculous.js?load=effects"></script>
    <script type="text/javascript" src="js/lightbox.js"></script>
    <link rel="stylesheet" href="css/lightbox.css" type="text/css" media="screen" />
     
    <script type="text/javascript">
    function createBox() {
    	var obj = document.getElementById("test");
    	var anchor = document.createElement("a");
    	anchor.setAttribute("rel","lightbox");
    	anchor.setAttribute("href","images/image-1.jpg");
    	var img = document.createElement("img");
    	img.setAttribute("src","images/image-1.jpg");
    	anchor.appendChild(img);
    	obj.appendChild(anchor);
    	alert(obj.innerHTML);
    }
    </script>
    </head>
    <body onload="createBox();">
    <div id="test"></div>
    <div>
    	<a href="images/image-1.jpg" rel="lightbox"><img src="images/image-1.jpg"></a>
    </div>
    </body>
    Avec la seconde div, cela fonctionnne nickel. Mais pas avec la première. Pourtant, avec le innerHTML, on peut voir que le code est rigoureusement le même. Quelqu'un aurait-il une astuce pour ce bug? Ou est ce tout simplement normal...

  2. #2
    Membre éprouvé
    Développeur Web
    Inscrit en
    Janvier 2007
    Messages
    83
    Détails du profil
    Informations personnelles :
    Âge : 43

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Janvier 2007
    Messages : 83
    Par défaut
    J'ai trouvé une solution à mon problème! En fait, le script lightbox "scan" les images de la page au chargement du script lightbox.js. Or, mes images ont créées après ce scan. Du coup, il ne les prend pas en compte!

    Ce qu'il faut faire : rajouter initLightbox(); à la fin de la fonction createBox() pour rescanner toutes les images de la page. C'était tout con.

    J'espère que ça servira a d'autres.

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

Discussions similaires

  1. Ajax function vs Lightbox
    Par jimmplan dans le forum jQuery
    Réponses: 2
    Dernier message: 09/04/2009, 22h05
  2. [AJAX] Reproduire un site Flash en Ajax (lightbox ?) d'après exemple.
    Par justmefr dans le forum Général JavaScript
    Réponses: 0
    Dernier message: 01/11/2008, 13h21
  3. [AJAX] Lightbox, MOOdalBox: ne marche pas dans ma page AJAX
    Par nims dans le forum Général JavaScript
    Réponses: 0
    Dernier message: 18/10/2008, 21h32
  4. [AJAX] Ajax et Lightbox
    Par nownow dans le forum Général JavaScript
    Réponses: 3
    Dernier message: 19/06/2008, 11h15
  5. Rafraichissement Ajax / Lightbox
    Par Adau72 dans le forum Général JavaScript
    Réponses: 2
    Dernier message: 11/04/2008, 15h52

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