|
Publicité ' | ||||||||||||||||||||||||
|
|
#1 | ||||
|
Invité de passage
![]() Inscription : octobre 2007 Messages : 32 ![]() |
Bonjour à tous,
je rencontre un problème lié au drag&drop : j'ai sur ma page plusieurs DIV (contenant des photos) dont la fonction drag&drop est appelée par javascript. Jusque là tout va bien... Or, lorsque je place un lien sur l'image contenue dans une DIV, la fonction drag&drop ne fonctionne plus. Je cherche une solution qui me permette par exemple d'atteindre mon lien par double-click pour que la fonction drag&drop soit conservée. Petite précision; le lien de l'image appelle un lightbox en javascript (et non un lien externe). J'ai donc le code suivant; mon drag&drop en javascript: Code :
Code :
|
||||
|
|
00
|
|
|
#2 |
|
Expert Confirmé
![]() danseur Inscription : août 2003 Messages : 2 667 ![]() |
en fait, si le lien n'en est pas un... vraiment, utilise un autre type de déclencheur neutre (div) parce que dragger un lien, c'est sûr que ça ne doit pas être facile;
__________________
On ne mord pas, on manifeste seulement notre tristesse face à des exposés de situations qui défient notre entendement binaire. |
|
|
00
|
|
|
#3 |
|
Membre expérimenté
![]() Développeur Inscription : février 2010 Messages : 360 ![]() |
Bonjour,
Le problème n'est pas simple à résoudre. En fait, lightbox se déclenche lorsqu'on clique sur le lien. Le drag, lui, se déclenche lorsqu'on clique sur la div. Le problème est le suivant : le lien est contenu dans la div, et lorsqu'on clique, on clique avant tout sur le lien... Le drag ne pourra jamais se faire avant lightbox... La solution la plus simple consisterait à ne plus faire le drag/drop directement sur l'image, mais sur une 'poignée' à coté...(une grosse bordure, qui serait en fait une autre div par exemple) Je conviens cependant que ce n'est ni très esthétique, ni très ergonomique... |
|
|
00
|
|
|
#4 |
|
Invité de passage
![]() Inscription : octobre 2007 Messages : 32 ![]() |
oui en effet j'y ai pensé mais je voulais savoir s'il n'y avait pas une solution pour combiner les deux....
Même en assignant un double-click (au lieu d'un click simple) au lien de l'image il y aurait le même problème ? |
|
|
00
|
|
|
#5 |
|
Invité de passage
![]() Inscription : octobre 2007 Messages : 32 ![]() |
En cherchant sur le net, j'ai trouvé ce site : http://www.1-2-3-info.se/ c'est à peur prés l'effet de double-click que je souhaiterais avoir (en plus simple évidemment)
|
|
|
00
|
|
|
#6 |
|
Membre du Club
![]() Inscription : mars 2011 Messages : 47 ![]() |
Salut, peut-être une idée :
Sur ton lien (div), si la souris (ou le div parent) n'a pas bougé entre le mousedown et mouseup => déclencher le lien, sinon => drop. La fonction endDrag() peut par exemple renvoyer vrai si la souris a bougé sinon faux. Cependant, je ne sais pas si c'est possible de gérer les lightbox autrement qu'avec des liens <a>, en Javascript ? |
|
|
00
|
|
|
#7 |
|
Invité de passage
![]() Inscription : octobre 2007 Messages : 32 ![]() |
oui en effet ça serait une solution, mais pareil je ne sais pas s'il y a d'autres possibilités de liens...
|
|
|
00
|
|
|
#8 |
|
Invité de passage
![]() Inscription : octobre 2007 Messages : 32 ![]() |
Et puis je crains que le lien se déclenche de toute façon sur le onmousedown
|
|
|
00
|
|
|
#9 |
|
Membre expérimenté
![]() Développeur Inscription : février 2010 Messages : 360 ![]() |
Lightbox fonctionne de la façon suivante :
- Lorsque la page est chargée, il parcoure le DOM - Dans le DOM, il cherche tous les liens contenant une image et ayant l'attribut - Chaque élément trouvé est stocké dans un tableau javascript - Chaque lien trouvé se voit attribuer un gestionnaire d'évènement sur le click(onmousedown) qui déclenche l'affichage en fenêtre modale. Il faudrait donc modifier le fonctionnement de lightbox afin de "court-circuiter" le gestionnaire d'évènement et gérer l'affichage de la fenêtre modale dans un gestionnaire d'évènement personnalisé. Ce n'est pas impossible, mais je ne crois pas que ça soit évident à faire sans bien connaître javascript... |
|
|
00
|
|
|
#10 | |
|
Membre du Club
![]() Inscription : mars 2011 Messages : 47 ![]() |
Autocitation :
Citation:
Le probleme réside dans l'attribut "rel" pour la gestion des lightbox ... |
|
|
|
00
|
|
|
#11 |
|
Invité de passage
![]() Inscription : octobre 2007 Messages : 32 ![]() |
oui je crois que c'est un peu ambitieux,
merci de votre réactivité en tout cas |
|
|
00
|
|
|
#12 | ||||
|
Invité de passage
![]() Inscription : octobre 2007 Messages : 32 ![]() |
J'ai la solution,
Le lien se déclenche tout simplement sur le click qui précède le double-clic. La solution consiste donc à désactiver le clic avant de transformer le click en double-clic. Ce qui donne dans la fonction initLightbox : Code :
on a donc : Code :
|
||||
|
|
00
|
|
|
#13 | ||
|
Invité de passage
![]() Inscription : octobre 2007 Messages : 32 ![]() |
d'ailleurs cela m'emmène à vous poser une autre question;
Quel est le code à ajouter pour modifier le z-index de mes divs lorsqu'elles sont sélectionnées, de façon à ce qu'elles passent automatiquement au premier plan ? en sachant que mon script drag&drop est le suivant: Code :
|
||
|
|
00
|
|
|
#14 |
|
Membre expérimenté
![]() Développeur Inscription : février 2010 Messages : 360 ![]() |
Bonsoir,
Je ne comprends plus très bien quel est ton code pour le drag&drop... Tu as résolu très vite ton premier problème finalement ! ![]()
|
|
|
00
|
|
|
#15 |
|
Invité de passage
![]() Inscription : octobre 2007 Messages : 32 ![]() |
le code n'est pas de moi je l'ai pris sur le net
peut-être n'est-ce pas là que je dois modifier le z-index de mes divs |
|
|
00
|
|
|
#16 |
|
Membre expérimenté
![]() Développeur Inscription : février 2010 Messages : 360 ![]() |
Je ne sais pas quel code tu utilise finalement, mais l'idée est de positionner le z-index le plus élevé sur le début du drag, et de le remettre à une valeur plus basse sur le drop.
On peut positionner le z-index en javascript avec : La meilleure solution est surement d'utiliser une classe CSS "par défaut" avec un z-index plus bas qu'une autre classe que tu applique sur le drag |
|
|
00
|
|
|
#17 |
|
Invité de passage
![]() Inscription : octobre 2007 Messages : 32 ![]() |
ok je vais essayer ça
merci ! |
|
|
00
|
|
|
#18 | ||||
|
Invité de passage
![]() Inscription : octobre 2007 Messages : 32 ![]() |
voici ce que j'ai fais :
j'ai placé le zIndex dans mon javascript : Code :
et dans mon body : Code :
mais ça n'a pas l'air de marcher... |
||||
|
|
00
|
|
|
#19 | ||
|
Membre du Club
![]() Inscription : mars 2011 Messages : 47 ![]() |
Tant qu'à insister, autant aller jusqu'au bout !
![]() Voici donc ton code modifié qui fonctionne - Je clique sans déplacer, le lien s'ouvre - Je déplace, le lien ne s'ouvre pas Code :
|
||
|
|
00
|
|
|
#20 | ||
|
Invité de passage
![]() Inscription : octobre 2007 Messages : 32 ![]() |
Merci mais ce problème je l'ai résolu
mon problème réside maintenant sur la gestion du zIndex que j'ai résolu en partie, voici ce que j'ai fais; Dans la fonction drag, appelée au début du déplacement, lorsque j'ai « attrapé » le container de class drag, j'ai modifié le zIndex : Code :
Car dans cet exemple, une foi relâchée , celle-ci se repositionne en arrière plan |
||
|
|
00
|
Copyright © 2000-2012 - www.developpez.com