Je signale une trappe que je viens de remarquer, qui concerne FireFox et les gestionnaires d'événements.
Si vous définissez de manière globale, un fonction du nom de "onmousemove" par exemple, alors FireFox l'attachera implicitement à window.onmousemove, alors que les autres navigateurs ne le font pas.
Le comportement de FireFox parrait logique dans le sens ou tous ce qui est défini globalement est attaché à l'objet window.
Mais en même temps cela semble illogique dans la sens ou il s'agit d'une définition, et non pas d'une affectation.
En tous les cas, faites-y attention, parce qu'en faisant
function onmousemove (...)
{
...
}
div.onmousemove = onmousemove;
Alors onmousemove sera appelé à la fois quand la souris passe sur le div, mais aussi quand elle passe n'importe où ailleurs sur la fenêtre.
Ceci vaut pour tout les gestionnaires d'événement : FireFox assimile une déclaration à une affectation.
Oui effectivement, c'est bizarre. Celà devrait etre spécifié et reglementé dans les normes sur les navigateurs (pour le JS), si ce n'est pas déjà fait.
__________________________
Prière de ne pas oublier le magnifique tag (résolu) si votre sujet l'est !
ça vient du fait d'appeler la fonction onmousemove
si on l'appelle toto, pas de "souci".
c'est vrai pour tout ( print, alert... )
le déplacement de la souris ailleurs appelle onmousemove !
qui a été écrasé par la fonction écrite.
EDIT : j'ai oublié de préciser que c'est "du à la gestion*des
évènements en js. un évènement sur un élément
déclenche le même évènement sur les parents,
sauf à "gérer" stopPropagation() et/ou cancelBubble.
c'est ce que j'entendais par "ailleurs" !?!
exemple :
<body>
<div id="d"
style=" background-color:#FFFF00;width:100%;
height:50%;overflow:auto"> </div>
<script>
var dv=document.getElementById("d");
function alert(xxx)
{ dv.innerHTML+=xxx+"<br />"; }
alert("exemple");