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 :

Lightbox V2.04 sur zone réactive


Sujet :

JavaScript

  1. #1
    Membre éclairé
    Inscrit en
    Octobre 2008
    Messages
    329
    Détails du profil
    Informations forums :
    Inscription : Octobre 2008
    Messages : 329
    Par défaut Lightbox V2.04 sur zone réactive
    Bonjour,

    Actuellement j'ai une grande photo avec plusieurs zones réactives sur lesquelles s'ouvrent des pop up classiques.
    Mais j'aimerais que quand on clique sur une des zones réactives ça ouvre l'agrandissement correspondant dans la lightbox V2.04.

    Voici une des zones réactives telle qu'elle est actuellement :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    <map name="Map" id="Map">
    <area shape="poly" coords="164,2,224,2,224,94,194,95,194,117,162,118"
    href="#" onclick="MM_openBrWindow('gallery/image.jpg','','width=400,height=584')" 
    alt=""/>
    </map>
    Voici un lien standard lightbox V2.04 :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    <a href="gallery/image.jpg" rel="lightbox">
    <img src="images/miniature.jpg" width="100" height="130" alt=""/></a>
    Evidemment en final il n'y aurait plus de "miniature.jpg" puisque les miniatures sont intégrées dans la grande photo que voici :



    Je n'arrive pas à "mélanger" les 2 codes ! J'ai essayé plusieurs solutions mais ça ne fonctionne pas...

    Est-ce possible ?

    Merci pour votre aide

  2. #2
    Membre Expert
    Avatar de emmanuel.remy
    Inscrit en
    Novembre 2005
    Messages
    2 855
    Détails du profil
    Informations personnelles :
    Âge : 56

    Informations forums :
    Inscription : Novembre 2005
    Messages : 2 855
    Par défaut
    Salut,

    Exactement comme pour une balise A: ajoute rel="lightbox" et le bon href dans les balises area concernées.


    ERE

  3. #3
    Membre éclairé
    Inscrit en
    Octobre 2008
    Messages
    329
    Détails du profil
    Informations forums :
    Inscription : Octobre 2008
    Messages : 329
    Par défaut Essais...
    J'ai déjà essayé plusieurs solutions, mais ça ne fonctionne pas. J'ai essayé par exemple :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    <area shape="poly" coords="164,2,224,2,224,94,194,95,194,117,162,118"
    href="/gallery/image.jpg" rel="lightbox" alt=""/>
    Quand je clique sur la zone réactive, l'écran se grise, mais la lightbox ne s'affiche pas....

  4. #4
    Membre Expert
    Avatar de emmanuel.remy
    Inscrit en
    Novembre 2005
    Messages
    2 855
    Détails du profil
    Informations personnelles :
    Âge : 56

    Informations forums :
    Inscription : Novembre 2005
    Messages : 2 855
    Par défaut
    Salut,

    Cela vient certainement d'un autre souci car voilà le code posé par Lighbox 2.4 pour choisir les liens à gérer:
    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
        //
        // updateImageList()
        // Loops through anchor tags looking for 'lightbox' references and applies onclick
        // events to appropriate links. You can rerun after dynamically adding images w/ajax.
        //
        updateImageList: function() {   
            this.updateImageList = Prototype.emptyFunction;
     
            document.observe('click', (function(event){
                var target = event.findElement('a[rel^=lightbox]') || event.findElement('area[rel^=lightbox]');
                if (target) {
                    event.stop();
                    this.start(target);
                }
            }).bind(this));
        }
    Donc <area rel="lightbox" ...> devrait fonctionner

    ERE

  5. #5
    Membre éclairé
    Inscrit en
    Octobre 2008
    Messages
    329
    Détails du profil
    Informations forums :
    Inscription : Octobre 2008
    Messages : 329
    Par défaut Area
    Bin oui ça devrait mais ça ne fonctionne pô...

    Je récapitule :
    Actuellement la gallerie fonctionne avec la grande photo, des zones réactives et des pop up classiques. Le problème pour moi est que je veux remplacer les pop up par la lightbox. J'ai un grand nombre de photos sur le site, et il serait plus rapide de gérer la gallerie de cette manière (grande photo/zones réactives) plutôt que d'insérer les miniatures une à une.

    Si je fais :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    <a href="gallery/image.jpg" rel="lightbox">
    <img src="images/miniature.jpg" width="100" height="130" alt=""/></a>
    Avec une miniature "miniature.jpg" et un agrandissement "image.jpg", la lightbox fonctionne parfaitement !

    Mais si je fais :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    <area shape="poly" coords="164,2,224,2,224,94,194,95,194,117,162,118"
    href="/gallery/image.jpg" rel="lightbox" alt=""/>
    Avec la grande photo dans laquelle sont insérées les miniatures avec des zones réactives, quand je clique sur la zone réactive, l'écran se grise comme si la lightbox allait s'afficher, mais elle ne s'affiche pas....

    En tout cas merci de t'intéresser à mon problème !

  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 : 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
    Salut,
    Code html : Sélectionner tout - Visualiser dans une fenêtre à part
    <a href="gallery/image.jpg" rel="lightbox">
    Code html : Sélectionner tout - Visualiser dans une fenêtre à part
    <area href="/gallery/image.jpg" rel="lightbox" alt=""/>
    Attention, "gallery/image.jpg" n'est pas pareil que "/gallery/image.jpg" !
    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

  7. #7
    Membre éclairé
    Inscrit en
    Octobre 2008
    Messages
    329
    Détails du profil
    Informations forums :
    Inscription : Octobre 2008
    Messages : 329
    Par défaut Mais euuuuh !
    Marche toujours pô...

    Si je retire le "/" avant gallery et rel="lightbox" :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <area href="gallery/image.jpg" alt=""/>
    Quand je clique ça m'affiche l'agrandissement. Donc il trouve bien l'image.

    Par contre si je rajoute rel="lightbox"

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <area href="gallery/image.jpg" rel="lightbox" alt=""/>
    Toujours pareil : Ca grise l'écran mais la lightbox ne s'affiche toujours pas...

    Mais tu avais raison : Il faut retirer le "/" sinon ça ne trouve pas l'image !

  8. #8
    Membre Expert
    Avatar de emmanuel.remy
    Inscrit en
    Novembre 2005
    Messages
    2 855
    Détails du profil
    Informations personnelles :
    Âge : 56

    Informations forums :
    Inscription : Novembre 2005
    Messages : 2 855
    Par défaut
    Re,

    Ton histoire m'a titillé du coup j'ai débuggé sur un cas complet... Remplace dans "lightbox.js" le if ligne 220 par celui-ci :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
            if ($(imageLink).readAttribute("rel") == 'lightbox'){
                // if image is NOT part of a set, add single image to imageArray
                this.imageArray.push([imageLink.href, imageLink.title]);
     
            } else {
                // if image is part of a set..
                this.imageArray = 
                    $$(imageLink.tagName + '[href][rel="' + $(imageLink).readAttribute("rel") + '"]').
                    collect(function(anchor){ return [anchor.href, anchor.title]; }).
                    uniq();
     
                while (this.imageArray[imageNum][0] != imageLink.href) { imageNum++; }
            }
    Initialement le code est le suivant:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    if (imageLink.rel == 'lightbox'){
    or il ne trouve pas l'attribut rel avec cette syntaxe pour une area. Il faut donc passer par un getAttribute ce qu'on fait "proprement" en utilisant prototype mis à notre disposition (suis pas spécialiste de cette librairie, mais readAttribute semble approprié).

    Ce n'est pas la première fois que je vois des bugs dans ce script lightbox et je suis assez atterré de constater qu'ils n'ont même pasfait des tests basiques, à savoir sur les deux seuls éléments gérés, A et AREA.

    ERE

  9. #9
    Membre éclairé
    Inscrit en
    Octobre 2008
    Messages
    329
    Détails du profil
    Informations forums :
    Inscription : Octobre 2008
    Messages : 329
    Par défaut Ca marche !
    Effectivement après avoir modifié "lightbox.js" maintenant ça fonctionne !

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    <area shape="poly" coords="164,2,224,2,224,94,194,95,194,117,162,118"
    href="gallery/image.jpg" rel="lightbox" alt="" />
    Je ne risquais pas de trouver par moi-même, étant nul en javascript !

    Merci beaucoup !

  10. #10
    Membre confirmé Avatar de greg91
    Homme Profil pro
    Administrateur système
    Inscrit en
    Novembre 2007
    Messages
    121
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 50
    Localisation : France

    Informations professionnelles :
    Activité : Administrateur système

    Informations forums :
    Inscription : Novembre 2007
    Messages : 121
    Par défaut
    Pour ceux qui ont le même problème mais avec l'option [roadtrip] pour la galerie d'image, il faut également remplacer la ligne 222 dans le fichier lightbox.js

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $$(imageLink.tagName + '[href][rel="' + imageLink.readAttribute("rel") + '"]').
    le bloc condition devient donc

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
            if ($(imageLink).readAttribute("rel") == 'lightbox'){
                // if image is NOT part of a set, add single image to imageArray
                this.imageArray.push([imageLink.href, imageLink.title]);         
            } else {
                // if image is part of a set..
                this.imageArray = 
                    $$(imageLink.tagName + '[href][rel="' + imageLink.readAttribute("rel") + '"]').
                    collect(function(anchor){ return [anchor.href, anchor.title]; }).
                    uniq();
     
                while (this.imageArray[imageNum][0] != imageLink.href) { imageNum++; }
            }

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

Discussions similaires

  1. Image survolée sur zone réactive
    Par vanessatonton dans le forum Balisage (X)HTML et validation W3C
    Réponses: 2
    Dernier message: 17/02/2012, 12h11
  2. Pop up sur zone réactive
    Par ludopene dans le forum Général JavaScript
    Réponses: 9
    Dernier message: 17/02/2009, 00h39
  3. [AJAX] ajax et zone réactive sur image
    Par Raideman dans le forum Général JavaScript
    Réponses: 1
    Dernier message: 28/11/2008, 11h19
  4. zones réactives sur image de fond
    Par epona1 dans le forum Balisage (X)HTML et validation W3C
    Réponses: 12
    Dernier message: 16/07/2006, 14h37
  5. [HTML][USEMAP] Précision sur les zones réactives
    Par cladsam dans le forum Balisage (X)HTML et validation W3C
    Réponses: 2
    Dernier message: 08/02/2006, 08h20

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