LIGHTBOX SANS ONCLICK ET AVEC REDIMENSIONNEMENT

jdmcreator Messages postés 647 Date d'inscription samedi 30 décembre 2000 Statut Membre Dernière intervention 20 juillet 2012 - 7 avril 2009 à 14:12
gillardg Messages postés 3275 Date d'inscription jeudi 3 avril 2008 Statut Membre Dernière intervention 14 septembre 2014 - 20 mai 2010 à 11:10
Cette discussion concerne un article du site. Pour la consulter dans son contexte d'origine, cliquez sur le lien ci-dessous.

https://codes-sources.commentcamarche.net/source/49747-lightbox-sans-onclick-et-avec-redimensionnement

gillardg Messages postés 3275 Date d'inscription jeudi 3 avril 2008 Statut Membre Dernière intervention 14 septembre 2014 2
20 mai 2010 à 11:10
cool cool cool :)
XtremDuke Messages postés 626 Date d'inscription samedi 28 septembre 2002 Statut Membre Dernière intervention 18 mai 2009 4
15 avril 2009 à 09:18
- Pour le window.onload, c'est la seule manière que j'ai trouvé pour lancer le script au chargement sans utiliser de

>> Tout simplement :
addEvent(window, "load", maFonction);

- Pour le "sImg.style.filter = 'alpha(opacity='+sLayerImage+')';", j'ai bien penser utiliser un png, mais dans ce cas, il n'y a plus de transparence pour ie6...

>> Fait un test juste avant de regler ton opacité :
De manière "barbare" if(document.all) ... else ....

-Il fallait que je remonte l'objet (ou un event)...

>> Ta fonction addEvent te permet de récuperer l'event donc l'objet :
addEvent(obj, "click", clickObjet);

function clickObjet(event){
if(!event) var event = window.event;
var monObject = event.target || event.srcElement;
}
cyrphp Messages postés 18 Date d'inscription dimanche 17 octobre 2004 Statut Membre Dernière intervention 13 avril 2009
13 avril 2009 à 19:01
@zoby44

heu non , peut-etre n'as tu pas compris ce que j'ai fait :)

dans la boite des propriétés de liens de fckeditor , tu as l'onglet avancé . C'est dans celui-ci que j'ai ajouté au formulaire un champ rel , pour gerer l'attribut rel des liens .
De la , dans l'attribut REL tu y met ce que tu veut (no-follow , external , [lighbox] , etc ... ) Tu applique alors ton lightbox ou tu veut :) .

Ceci dit , ton script est intéressant , ma remarque ne se portait que sur ton approche du problème .

GC
zoby44 Messages postés 818 Date d'inscription vendredi 3 novembre 2006 Statut Membre Dernière intervention 7 avril 2010
13 avril 2009 à 18:33
Salut. Je voulais d'abord répondre à XtremDuke.

- Pour le window.onload, c'est la seule manière que j'ai trouvé pour lancer le script au chargement sans utiliser de

- Pour le "sImg.style.filter = 'alpha(opacity='+sLayerImage+')';", j'ai bien penser utiliser un png, mais dans ce cas, il n'y a plus de transparence pour ie6, et ce n'est plus possible de modifier la transparence en changeant la valeur des LayerOpacity, et personnellement, je n'ai eu aucun problème avec les debuggeurs (Firebux et debbugbar pour ie8)

- addEvent(obj,'click',(function (objet){
return function() {
sLight(objet)
};
})(obj));

Il fallait que je remonte l'objet (ou un event). J'ai essayer pleins de méthodes, dont celle que tu donne, mais uniquement celle ci fonctionne (elle ma été donnée sur le forum du siteduzero d'ailleurs, merci à eux).

Mais je suis bien conscient qu'il me reste encore pleins de progrès a faire en JS.

@cyrphp -> J'ai bien pensé à modifier FckEditor, mais dans ce cas, toutes les images s'ouvrent dans un lightbox, je veux pouvoir choisir lesquelles ouvrir. Et à chaque changement de version de fck, il faut remodifier le fichier (enfin je pense).

@Heirem -> Je suis content qu'elle t'ai appris quelque chose.
cs_Heirem Messages postés 22 Date d'inscription dimanche 16 juillet 2006 Statut Membre Dernière intervention 25 novembre 2011
13 avril 2009 à 17:59
Bonjour,
Tu as bien fait de mettre cette source dans le niveau débutant.
Ce n'est pas parfait et cela reste à travailler mais je la garde car ce code est vraiment enrichissant et formateur, en particulier en ce qui concerne la gestion des événements js.
Donc merci !
cyrphp Messages postés 18 Date d'inscription dimanche 17 octobre 2004 Statut Membre Dernière intervention 13 avril 2009
13 avril 2009 à 16:13
Bonjour,

J'ai , a l'occassion adapté un FckEditor pour pour pouvoir faire usage du script lightbox.

Ma demarche fut differente . En effet , j'ai simplement modifié la boite de dialogue qui gere les lien (ainsi qu'une modification/ajout dans le script) et ajouté l'attribut "rel" .

Cela permet d'avoir accés a cet attribut "rel" pour les usages habituels ou pour differents scripts (sans forcement avoir a récrire ceci :) ) .

CyrPhp
XtremDuke Messages postés 626 Date d'inscription samedi 28 septembre 2002 Statut Membre Dernière intervention 18 mai 2009 4
8 avril 2009 à 16:13
Salut,

Je n'ai pas regardé en profondeur ton source mais j'ai cependant relevé quelques ambiguités :

- Comme celà a déjà été remonté, ton layer d'arrière-plan ne peut pas être au bonnes dimensions du viewport.

- Je vois dans le titre "LIGHTBOX SANS ONCLICK" : ok tu vas utiliser le gestionnaire d'évènement JS mais parcontre je vois un "window.onload" ?! Pourquoi ne pas utiliser en profondeur ta fonction "addEvent()" ?

- "sImg.style.filter = 'alpha(opacity='+sLayerImage+')';" rique de provoquer un saut d'humeur dans les débuggers CSS.

- addEvent(obj,'click',(function (objet){
return function() {
sLight(objet)
};
})(obj));

>> tu te compliques la vie, pourquoi ne pas faire tout simplement "addEvent(obj,'click', sLight);" ?

- addEvent(sLayer,'click',function () {sClose(sLayer,sImg)});

>> Attention aux fonctions anonymes qui provoquent des fuites mémoire.

A+
lakichemole Messages postés 253 Date d'inscription vendredi 13 juin 2003 Statut Membre Dernière intervention 18 mai 2009
8 avril 2009 à 14:15
Et la note :)
lakichemole Messages postés 253 Date d'inscription vendredi 13 juin 2003 Statut Membre Dernière intervention 18 mai 2009
8 avril 2009 à 14:14
Ayant mon debugger javascript activé sous IE6 j'ai un message d'erreur quand je click sur une image "windows.scroball a la valeur null" ligne 133 .
Sinon ça marche bien :)
zoby44 Messages postés 818 Date d'inscription vendredi 3 novembre 2006 Statut Membre Dernière intervention 7 avril 2010
7 avril 2009 à 23:25
Mais vu que je ne met pas de onclick, je ne sais pas comment faire pour l'ajouter dynamiquement (avec addEvent). Ce que j'ai fait, a la place, c'est mettre un id sur chaque images, et une ancre. Comme ça on garde la page à la position de l'image. C'est toujours mieux que de remonter en haut de la page à chaque fois.
jdmcreator Messages postés 647 Date d'inscription samedi 30 décembre 2000 Statut Membre Dernière intervention 20 juillet 2012 7
7 avril 2009 à 23:03
Pour éviter de faire remonter la page, il faut utiliser return false dans le onclick comme onclick="return false;"

Cordialement,

JDMCreator
zoby44 Messages postés 818 Date d'inscription vendredi 3 novembre 2006 Statut Membre Dernière intervention 7 avril 2010
7 avril 2009 à 19:55
En effet, il y a quelques bugs. Il a encore d'autre améliorations a faire, par exemple, quand on clic sur une image qui est en milieu de page, vu que je remplace les liens par des ancres, la page remonte a chaque fois. Pas pratique. En tout cas, merci pour tes remarques. Je vais essayer de corriger ça pour ce soir.
jdmcreator Messages postés 647 Date d'inscription samedi 30 décembre 2000 Statut Membre Dernière intervention 20 juillet 2012 7
7 avril 2009 à 14:12
Bonjour,

Bravo pour votre source, c'est simple et rapide.

Par contre, au niveau des erreurs de rendus, le fond gris ne prend pas toute la place dans la page. Aussi, peut-être rajouter comme style de position fixed, au cas où la page serait longue et son équivalent javascript pour IE7>

Cordialement,

JDMCreator
Rejoignez-nous