LIGHTBOX SANS ONCLICK ET AVEC REDIMENSIONNEMENT

Signaler
Messages postés
647
Date d'inscription
samedi 30 décembre 2000
Statut
Membre
Dernière intervention
20 juillet 2012
-
gillardg
Messages postés
3275
Date d'inscription
jeudi 3 avril 2008
Statut
Membre
Dernière intervention
14 septembre 2014
-
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
3
cool cool cool :)
XtremDuke
Messages postés
631
Date d'inscription
samedi 28 septembre 2002
Statut
Membre
Dernière intervention
18 mai 2009
3
- 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

@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
817
Date d'inscription
vendredi 3 novembre 2006
Statut
Membre
Dernière intervention
14 décembre 2010

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
23
Date d'inscription
dimanche 16 juillet 2006
Statut
Membre
Dernière intervention
25 novembre 2011

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

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
631
Date d'inscription
samedi 28 septembre 2002
Statut
Membre
Dernière intervention
18 mai 2009
3
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

Et la note :)
lakichemole
Messages postés
253
Date d'inscription
vendredi 13 juin 2003
Statut
Membre
Dernière intervention
18 mai 2009

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
817
Date d'inscription
vendredi 3 novembre 2006
Statut
Membre
Dernière intervention
14 décembre 2010

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
4
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
817
Date d'inscription
vendredi 3 novembre 2006
Statut
Membre
Dernière intervention
14 décembre 2010

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
4
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