j'ai essayé de faire qqch dans le meme esprit, mais il y a un bug
voir mes remarques ci-dessous...
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20
| <html>
<head>
<script language=javascript>
var mouseDown = false;
function fonction()
{
document.all("monImage").width=document.all("monImage").width +10;
}
</script>
</head>
<body onmousemove=" if(mouseDown) fonction();" onmousedown="mouseDown=true;" onmouseup="mouseDown=false" >
<img id="monImage" src="exemple.jpg">
</body>
</html> |
Dans mon exemple, la fonction appelée zoome l'image.
Quand on effectue le mousemove + mousedown en dehors de l'image, tout va bien.
Mais lorsqu'on effectue cette combinaison sur l'image, la fonction appelée fait son travail pendant un très court laps de temps puis se bloque: le curseur de souris "interdiction" apparait alors, jusqu'à ce qu'on relache le bouton de la souris (mouseup), ce qui provoque 2 choses:
1- un imperceptible zoom de l'image
2- le curseur par défaut de la souris est de nouveau affiché
donc on pourrait penser que l'evenement mouseup a été détecté.
Mais il semble que non, car à présent si on remue la souris (mousemove) sans appuyer sur le bouton, la fonction est executée quand meme!
On peut d'ailleurs, en modifiant le code du body comme suit, vérifier que l'evenement mouseup n'est pas détecté par celui-ci.
onmouseup="mouseDown=false; alert('mouse up!!')"
Je ne vois pas où est l'erreur...
Partager