OVH Cloud OVH Cloud

mouseover multiple

7 réponses
Avatar
Steph
Bonjour,
je n'arrive pas a faire un mouseover multiple.
C'est a dire,
que lorsque je survole un element (un div par exemple) mon event "mouseover"
se declenche mais qu'il laisse passer cet event pour que les autres elements
en dessous de la page (pas forcement imbrique... cela peu etre un table,
span, div... disposant egalement d'un event mouseover) puisse s'en servir
et detecter que la souris se trouve egalement sur eux.

Peut etre que je devrais memerise tous les objets avec un event, et quand je
fais un drag je teste si je me trouve dans le rect d'un ou des de ces
objets ?!
Mais s'il y a une solution plus rapide... et moins gourmande...

7 réponses

Avatar
ASM
Bonjour,
je n'arrive pas a faire un mouseover multiple.


kesako un event multiple ?

events la base (en anglais) :
http://www.quirksmode.org/index.html?/js/introevents.html
events et propagation (touj en anglais)
http://developer.mozilla.org/en/docs/Gecko_DOM_Reference:Examples
events et events Listener (en français)
http://www.yoyodesign.org/doc/w3c/dom2-events/events.html
http://www.yoyodesign.org/doc/w3c/dom2-events/events.html#Events-EventListener

C'est a dire,
que lorsque je survole un element (un div par exemple) mon event "mouseover"
se declenche mais qu'il laisse passer cet event pour que les autres elements
en dessous de la page (pas forcement imbrique... cela peu etre un table,


un td dans un table est déjà, à mon sens, un élément imbriqué dans un autre.

span, div... disposant egalement d'un event mouseover) puisse s'en servir
et detecter que la souris se trouve egalement sur eux.


je ne comprends pas bien la finalité de la chose ...
ni la demande exacte : (un mouseover multiple ou un click multiple)
- 2 réactions différentes ?
suivant qu'on est sur le table ou un td particulier
ça je le comprends
(même si, à ce que je crois, tous les brouteurs ne donnent pas la
priorité au même élément)
- réactions additionnées : table+td si on est sur le td ?
suffit que la fonction sur td appelle celle du table, j'imagine?

Peut etre que je devrais memerise


memeriser = verbe inconnu de moi-même

tous les objets avec un event, et quand je
fais un drag


drag ou mousemove ?

je teste si je me trouve dans le rect d'un ou des de ces
objets ?!
Mais s'il y a une solution plus rapide... et moins gourmande...


Je ne vois pas bien comment, autrement qu'en fixant une réaction à un
event à l'élément, cet élément peut le deviner.

On peut attribuer les events aux éléments voulus par une boucle JS
plutôt qu'en codant en dur dans le html de chaque élément visé, si c'est
ça le pb.


--
Stephane Moriaux et son [moins] vieux Mac

Avatar
Steph
Bonjour, quelques complements d'information :
j'ai trois claques superposé a l'ecran et dont le code HTML n'est pas
imbrique (donc pas de lien de parente).
Ces trois calques se superposent dans leurs angles (par exemple) et donc on
en commun une zone.
Chacun de ces trois calque a sa propre action de captuve d'evenement
onmouseover.
Le probleme etant tres simple : il n'y a pas d'heritage possible descendant
ou montant... donc si je declenche le mouseover (par survol de la souris
sur ...) du calque ayant le plus grand zindex, alors les claques se trouvant
egalement sous ma souris mais ayant un zindex inferieur ne declenche pas
l'evenement onmouseover...
D'ou ma question... comment un calque (ou autre element qu'importe... un td
puis tr puis table.... notion d'heritage !) ayant le zindex le plus
important passe l'information "event" au calque ou tout autre element se
trouvant en dessous....

bref j'ai pratiquement fini mon script que j'ai annonce a savoir :
declaration des mes objets "manipulables a l'ecran",
ajout des comportements autorises (mouseover, mousedown, mouseout, ...)
memorisation dans une pile de ces objets,
et en cas de survol d'un de ces elements :
passage dans un zindex maximum,
declaration dans mon document de l'event mouseover et enumeration de ma
pile avec recherche de rect pour detecter les autres zones (donc elements
egalements survoles) puis mise en surbrillance des elements....

eventuellement.... si quelqu'un a une solution de propagation d'event pour
des elements n'ayant pas de notion d'heritage.... je suis preneur !



"ASM" a écrit dans le message
de news: 449bb5e2$0$881$
Bonjour,
je n'arrive pas a faire un mouseover multiple.


kesako un event multiple ?

events la base (en anglais) :
http://www.quirksmode.org/index.html?/js/introevents.html
events et propagation (touj en anglais)
http://developer.mozilla.org/en/docs/Gecko_DOM_Reference:Examples
events et events Listener (en français)
http://www.yoyodesign.org/doc/w3c/dom2-events/events.html
http://www.yoyodesign.org/doc/w3c/dom2-events/events.html#Events-EventListener

C'est a dire,
que lorsque je survole un element (un div par exemple) mon event
"mouseover" se declenche mais qu'il laisse passer cet event pour que les
autres elements en dessous de la page (pas forcement imbrique... cela peu
etre un table,


un td dans un table est déjà, à mon sens, un élément imbriqué dans un
autre.

span, div... disposant egalement d'un event mouseover) puisse s'en
servir et detecter que la souris se trouve egalement sur eux.


je ne comprends pas bien la finalité de la chose ...
ni la demande exacte : (un mouseover multiple ou un click multiple)
- 2 réactions différentes ?
suivant qu'on est sur le table ou un td particulier
ça je le comprends
(même si, à ce que je crois, tous les brouteurs ne donnent pas la
priorité au même élément)
- réactions additionnées : table+td si on est sur le td ?
suffit que la fonction sur td appelle celle du table, j'imagine?

Peut etre que je devrais memerise


memeriser = verbe inconnu de moi-même

tous les objets avec un event, et quand je fais un drag


drag ou mousemove ?

je teste si je me trouve dans le rect d'un ou des de ces objets ?!
Mais s'il y a une solution plus rapide... et moins gourmande...


Je ne vois pas bien comment, autrement qu'en fixant une réaction à un
event à l'élément, cet élément peut le deviner.

On peut attribuer les events aux éléments voulus par une boucle JS
plutôt qu'en codant en dur dans le html de chaque élément visé, si c'est
ça le pb.


--
Stephane Moriaux et son [moins] vieux Mac



Avatar
ASM
Bonjour, quelques complements d'information :
j'ai trois claques


on dit des baffes :-)

eventuellement....


Je comprends très difficilement ...
pourquoi ça change de z-index ?
accessoirement, comment on capte qu'on est sur le petit rectangle 3
niveaux plus bas que le gros du dessus ?
Il n'y a pas moyen de régler l'empilement dans un ordre logique :
le plus gros dessous et le plus petit dessus ?

si quelqu'un a une solution de propagation d'event pour
des elements n'ayant pas de notion d'heritage.... je suis preneur !


sauf si tu ne sais d'avance comment s'empilent les baffes
(dans quel ordre avant le changement de z-index)
si on overise sur l'un d'eux, il sait bien quels sont les autres
dessous, non ?

essayer ceci :
http://cjoint.com/?gxoQfkVzFe
où je me passe de z-index
et me contente de re-ranger les divs par taille dans le flux

--
Stephane Moriaux et son [moins] vieux Mac

Avatar
Guy
Bonjour,
je n'arrive pas a faire un mouseover multiple.
C'est a dire,
que lorsque je survole un element (un div par exemple) mon event "mouseover"
se declenche mais qu'il laisse passer cet event pour que les autres elements
en dessous de la page (pas forcement imbrique... cela peu etre un table,
span, div... disposant egalement d'un event mouseover) puisse s'en servir
et detecter que la souris se trouve egalement sur eux.

Peut etre que je devrais memerise tous les objets avec un event, et quand je
fais un drag je teste si je me trouve dans le rect d'un ou des de ces
objets ?!
Mais s'il y a une solution plus rapide... et moins gourmande...


Bonjour,

vous pouvez consulter :

http://www.quirksmode.org/js/events_order.html
et
http://www.aidejavascript.com/article144.html

qui pourront vous donner qqs pistes

G

Avatar
Steph
merci pour ces pistes, que j'avais deja explore. le probleme est que ce
n'est valable que si il y a heritage.

J'ai fait le script que j'ai annonce et tout fonctionne. Cela semble rapide,
mais necessite une programmation un peu plus lourde.

ASM : votre exemple est tres bien... mais si on fait un roll si le calque
"petit" (on obtiens le message : "je suis le petit div") on se trouve
egalement dans une zone du moyen et grand div ! Donc ma premiere question
posé était : comment détecter qu'on se trouve egalement sur le moyen et
gros en meme temps (ils ont tous trois une zone en commun). Ensuite ma
question etait encore plus pertinente : a savoir : si je fait un drag de mon
"petit calque" et que celui ci, en le deplacant a l'ecran, se trouve avoir
une partie en commun avec l'un des deux autres, comment le detecter ? et
plus exactement, quand je fais un mousemove du petit calque (donc un drag de
celui ci) comment detecter le onmouseover des deux autres calques dans la
mesure ou il n'y a pas d'heritage et que la propagation de l'event mouseover
s'arrete par le path : "div id=petit" > "div id=content" > "body" donc...
aucun moyen a ma connaissance que le div moyen et gros obtienene l'heritage
et donc le declenchement onmouseover si on fait un drag du div petit et que
la souris se trouve sur moyen et gros...

bref, j'ai fait mon script pour pallier a tous ces problemes, si
eventuellement mon manque de connaissance peu etre enrichie par une commande
DOM ou JS jusque la inconnue dans ma bibliotheque cerebrale... je suis
toujours preneur.




"Guy" a écrit dans le message de news:
e7h072$3md$
Bonjour,
je n'arrive pas a faire un mouseover multiple.
C'est a dire,
que lorsque je survole un element (un div par exemple) mon event
"mouseover" se declenche mais qu'il laisse passer cet event pour que les
autres elements en dessous de la page (pas forcement imbrique... cela peu
etre un table, span, div... disposant egalement d'un event mouseover)
puisse s'en servir et detecter que la souris se trouve egalement sur eux.

Peut etre que je devrais memerise tous les objets avec un event, et quand
je fais un drag je teste si je me trouve dans le rect d'un ou des de ces
objets ?!
Mais s'il y a une solution plus rapide... et moins gourmande...
Bonjour,

vous pouvez consulter :

http://www.quirksmode.org/js/events_order.html
et
http://www.aidejavascript.com/article144.html

qui pourront vous donner qqs pistes

G



Avatar
ASM

J'ai fait le script que j'ai annonce et tout fonctionne. Cela semble rapide,
mais necessite une programmation un peu plus lourde.


Est-ce qu'un jour on verra ce script ?
Qu'on comprenne enfin de quoi il retourne exctement.

ASM : votre exemple est tres bien... mais si on fait un roll si le calque
"petit" (on obtiens le message : "je suis le petit div") on se trouve
egalement dans une zone du moyen et grand div !


certes, je n'ai pas fait *la complète*
ce n'est qu'une démo pour s'affranchir des z-index

Je suppose qu'il est assez facile de connaître l'emplacement et
l'encombrement des différents divs puisque déplacés volontairement
(à ce que j'ai compris)
Partant de là un mouseover *sur la page* devrait donner en réponse quels
sont les calques survolés en fonction des éléments récoltés ci-dessus.

si mon manque de connaissance peu etre enrichie par une commande
DOM ou JS jusque la inconnue dans ma bibliotheque cerebrale... je suis
toujours preneur.


http://www.walterzorn.com/dragdrop/dragdrop_e.htm



--
Stephane Moriaux et son [moins] vieux Mac

Avatar
Steph
"ASM" a écrit dans le message
de news: 449e6c40$0$838$

J'ai fait le script que j'ai annonce et tout fonctionne. Cela semble
rapide, mais necessite une programmation un peu plus lourde.


Est-ce qu'un jour on verra ce script ?
Qu'on comprenne enfin de quoi il retourne exctement.


voili :
http://www.netvibes.com/


ASM : votre exemple est tres bien... mais si on fait un roll si le calque
"petit" (on obtiens le message : "je suis le petit div") on se trouve
egalement dans une zone du moyen et grand div !


certes, je n'ai pas fait *la complète*
ce n'est qu'une démo pour s'affranchir des z-index

Je suppose qu'il est assez facile de connaître l'emplacement et
l'encombrement des différents divs puisque déplacés volontairement
(à ce que j'ai compris)
Partant de là un mouseover *sur la page* devrait donner en réponse quels
sont les calques survolés en fonction des éléments récoltés ci-dessus.

si mon manque de connaissance peu etre enrichie par une commande DOM ou
JS jusque la inconnue dans ma bibliotheque cerebrale... je suis toujours
preneur.


http://www.walterzorn.com/dragdrop/dragdrop_e.htm


c'est connu et vieux tout ca ! ;)


merci a tous, bonne continuation et a bientot.





--
Stephane Moriaux et son [moins] vieux Mac