codefalse
Messages postés1123Date d'inscriptionmardi 8 janvier 2002StatutModérateurDernière intervention21 avril 2009
-
14 févr. 2008 à 19:34
codefalse
Messages postés1123Date d'inscriptionmardi 8 janvier 2002StatutModérateurDernière intervention21 avril 2009
-
16 févr. 2008 à 13:39
Bonjour à tous :)
J'ai une partie de ma page html qui est une
et qui contient plusieurs div, avec plusieurs niveau :
1 heure
2 heures
...
Janvier
...
Sous niveau de "mois"
enfin bref :p
Et quand je met un document.getElementById("container").onmouseout = function () { alert ("out !");}
J'ai une alert dès que je sort de Janvier, de 1 heure, de Sous niveau de "mois", de n'importe ou à l'intérieur de "container" ET aussi quand je sort de "container".
Je voudrais que mon alert ne se fasse QUE quand je sort de container, et pas de ses éléments enfants.
cs_bultez
Messages postés13615Date d'inscriptionjeudi 13 février 2003StatutMembreDernière intervention15 octobre 201330 15 févr. 2008 à 11:51
>>si je sort de container mais pour aller dans un élément fils,
si google a le même souci, ça ne doit pas être un truc tout simple pour régler.
je ne pense pas qu'on puisse "mettre" la souris à un position donnée ?
( enfin, en javascript "pur" )
>>d'où mon mouseOut.
en cas de sélection en cours,
si le container perd le focus, le lui rendre ?
jouer avec la scrollbar si onmousemove sur les fils ?
...
codefalse
Messages postés1123Date d'inscriptionmardi 8 janvier 2002StatutModérateurDernière intervention21 avril 20091 15 févr. 2008 à 12:38
Chuis sur que c'est possible, même si google ne l'a pas fait :p
J'ai une idée :
Imagine ton container à 50 de partout (top, left, right, bottom)
Tu récupere la position de la souris actuellement
Si elle se trouve à 50 px avant le bas de ton container, alors tu fait container.scrollTop += 20 (20 est arbitraire), idem si elle est à 50 du top, left, right, etc, tu agis en +/- sur scrollTop/scrollLeft, ceci seulement si mouse est down (j'ai un boolean qui se met à true quand mouseDown et false quand mouseUp).
Je pense que ca pourrait marcher ... à tester ! :p
Le seul ennui c'est mettre mon boolean à false quand ma souris sort du container (pour éviter une sélection en attente (boolean toujours à true) si je relache la souris hors de mon container.
En y réfléchissant j'ai ptete la solution, je met moncontainer.onmousedown mafunction; et document.onmouseup autrefunction;
Comme ca j'ai pas besoin d'analyser un onmouseout, si le type lache la souris Hors de mon container (ou pas), je met la sélection à false et stop !
A tester !
Jte tiens au courant ! :)
A mon avis c'est une solution envisageable, en sachant qu'il doit exister d'autres possibilités :) mais c'est celle qui me parait la plus plausible... jte redis ca ! :)
codefalse
Messages postés1123Date d'inscriptionmardi 8 janvier 2002StatutModérateurDernière intervention21 avril 20091 15 févr. 2008 à 09:37
Toi t'es toujours là pour m'aider ! :)
Merci bien ! :)
Ok donc il va falloir "bricoler" un système fonctionnel ! :/
En fait si tu veux jte donne le point de départ de ma question, peut-etre est-ce que tu connais une alternative, une solution (jte demande pas que "tu fasse mon code", cela va de soi ;))
En fait voila, j'ai une div (que l'on appelera "container"), que je positionne en absolute à top/left/right/bottom à 50px.
Dans cette div, je met une autre deux div, la premiere de hauteur 1000px et de largeur 150px, et l'autre, à coté (float:left) de hauteur 1000px et largeur 850px
Je met un overflow:auto à la première div (container) comme ca si le type redimensionne son navigateur, la div principale restera toujours à une même position et l'intérieur aura des scroll bar (c'est pour éviter d'avoir des scroll bar dans la div ET dans le navigateur (ca c'est chian ! :/)
Enfin, dans la seconde div, j'ai fait un systeme de selection, quand on clique quelque part, on a une div qui apparait, et tant qu'on lache pas la souris, la div suit la souris (c'est une sorte de zone de sélection, la meme que celle que tu fait sur ton bureau ou dans l'explorer pour sélectionner plusieurs documents)
Mais voila, quand j'arrive en bas de mon "container", si la scroll bar de droite n'est pas en bas, elle ne se déplace pas avec la souris ; la souris sort du container et la sélection reste à l'intérieur, mais s'arrete. Du coup ensuite j'ai un bug car mon container ne sais plus ou en est la souris (si le type à relaché ou pas etc).
C'est pour ca que je voulais savoir si on peux savoir quand on sort de la div, comme ca quand c'est le cas, je fait scrollBarRight+20 tant que on est en dehors de "container" et pareil pour celle du bas.
cs_bultez
Messages postés13615Date d'inscriptionjeudi 13 février 2003StatutMembreDernière intervention15 octobre 201330 15 févr. 2008 à 10:09
lu en diagonale...
>>si la scroll bar de droite n'est pas en bas, elle ne se déplace pas
avec la souris ;
pas compris.
mais on joue comme on veut sur la position des scrollbar
élément.scrollTop et/ou Left
>>la souris sort du container et la sélection reste à
l'intérieur
là je vois..
tester si onmousemove déclenché "ailleurs" ?
contrôler le déplacement de la souris si sélection en cours ?
...
mais tu y as déjà probablement pensé ainsi qu'à d'autres pistes...
codefalse
Messages postés1123Date d'inscriptionmardi 8 janvier 2002StatutModérateurDernière intervention21 avril 20091 15 févr. 2008 à 11:19
En effet j'y ai pensé :p
"si la scroll bar de droite n'est pas en bas, elle ne se déplace pas avec la souris ;"
Important (truc à pas lire en diagonale, le reste tu peux :p)<<<
Imagine, j'ai donc ma div qui s'auto dimensionne en fonction de ma sélection (regarde google agenda, ils ont le même probleme). Tu clique à un endroit, ta la div qui apparait, et tu descend sans lacher le clic, la div s'agrandi. Jusque là, finger in the nose.
Maintenant si la souris sort du container, la div arrete de s'agrandir (en même temps c'est logique) (google à le même probleme). Moi je veux agir sur élément.scrollTop (comme tu l'a bien dit, mais c'était prévu), quand la souris sort de la div "container", d'où mon mouseOut.
>>> FIN
Si la souris est en bas, je fait scrollTop + x, si elle est en haut, scrollTop - x (avec x un pas de 20 par exemple)
Tu capte mieux ?
Et donc voila mon probleme, si je sort de container mais pour aller dans un élément fils, ca me fait n'importe quoi (forcément :p)
codefalse
Messages postés1123Date d'inscriptionmardi 8 janvier 2002StatutModérateurDernière intervention21 avril 20091 15 févr. 2008 à 20:49
Bon l'idée marche.
Le probleme c'est que comme je fait le scroll dans l'évenement mousemove, et que je fait un +20 sur scrollTop, il faut bouger la souris sans cesse pour descendre tout en bas.
Faut que je trouve une autre solution plus efficace (pour le fait que si j'attends plus bas que ma zone, je descends encore).
cs_bultez
Messages postés13615Date d'inscriptionjeudi 13 février 2003StatutMembreDernière intervention15 octobre 201330 16 févr. 2008 à 10:29
>>l'idée marche.
agir avant d'atteindre les limites du container en faisant bouger les scrolls,
effectivement, ça devait baigner. je pensais bien que tu tenais le bon bout.
>>A part un setInterval, tu verrais quoi ?
en javascript, à part setInterval et/ou setTimeout... pas de grande possibilités...
[ à part attendre la réponse d'un serveur avec ajax ;o) ]