Partage
  • Partager sur Facebook
  • Partager sur Twitter

Highslide : intégration en javascript du onclick sous IE

Sujet résolu
    20 octobre 2008 à 17:16:40

    Bonjour tout le monde,

    Voilà je reviens pour un petit problème avec IE, toujours.

    J'ai une galerie d'images en javascript avec Highslide, dont le code d'intégration est le suivant :
    <a class="highslide" href="../samples/full1.jpg" <gras>onclick="return hs.expand(this)"</gras>>
       <img src="../samples/thumb1.jpg" alt=""/>
    


    Jusque là ça marche très bien sous FF et IE.

    Maintenant j'affiche ce code par javascript, et là ça marche sous Firefox et pas sous IE :

    lien = document.createElement ('a');
    		lien.setAttribute('href', photo[i]);
    		lien.setAttribute('class', 'highslide');
    		<gras>lien.setAttribute('onclick', 'return hs.expand(this)');</gras>
    	
    		image = document.createElement ('img');
    		image.setAttribute('src', photo[i]);
    
    		lien.appendChild (image);
    		document.getElementById ('galerie').appendChild (lien);
    


    La ligne problématique est celle ajoutant en javascript la propriété onclick au lien.
    Et plus précisément, la valeur de cette propriété. Si je laisse le "return hs.expand(this)", alors IE déclare une erreur, et ne veut pas lancer la fonction hs.expand. Si je l'enlève, il ne déclare pas d'erreur.

    Ca paraît bête, mais je ne comprends pas du tout pourquoi.
    Auriez vous une idée de ce refus du "return hs.expand(this)" par IE ?
    Comment le faire accepter le lancement de cette fonction ?

    Merci d'avance ;-)

    J'espère que j'étais assez clair ... :-$
    • Partager sur Facebook
    • Partager sur Twitter
    Anonyme
      20 octobre 2008 à 18:25:40

      faut pas utiliser setAttribute, tu fais simplement :

      lien.href = photo[i];
      lien.onclick = hs.expand;
      etc..
      • Partager sur Facebook
      • Partager sur Twitter
        20 octobre 2008 à 19:11:57

        Bonjour Seebz, merci pour la réponse, je ne connaissais pas ça !

        La galerie highslide ne se lance toujours pas par contre.

        C'est la ligne "onclick" qui pose toujours problème.
        J'ai essayé :
        lien.onclick = hs.expand;
        lien.onclick = hs.expand(this);
        lien.onclick = return hs.expand;
        lien.onclick = return hs.expand(this);
        lien.onclick = 'return hs.expand (this)';
        lien.onclick = return hs.expand('this');



        Bon ok ça y est je viens de trouver la réponse, il fallait donc mettre :
        lien.onclick = function (){
        return hs.expand(this);
        };

        Ca marche nickel, sous FF et IE !
        (j'ai trouvé cette expression sur http://forum.hardware.fr/hfr/Programmation/HTML-CSS-Javascript/evenement-onclick-dynamiquent-sujet_82833_1.htm)

        Merci encore à toi ;-)

        NB : la ligne
        lien.class = 'highslide';
        ne marche pas par contre et déclare une erreur javascript sous IE. J'ai du utiliser setAttribute.

        • Partager sur Facebook
        • Partager sur Twitter
        Anonyme
          20 octobre 2008 à 19:15:23

          bien vu , c'est lien.className qu'il faut utiliser..


          si lien.onclick = hs.expand; ne fonctionne pas c'est certainement pasque hs.expand() attend un paramètre..
          si la fonction utilisait this, on n'avait aps besoin de le passer en paramètre
          • Partager sur Facebook
          • Partager sur Twitter

          Highslide : intégration en javascript du onclick sous IE

          × Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
          × Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
          • Editeur
          • Markdown