1) Calcul des coordonnées de la souris
- au niveau de la fenêtre du navigateur
- au niveau de la page html complète
La fonction getPosMouse(event);
retourne dans le tableau associatif posMouse (déjà déclaré) les valeurs suivantes:
posMouse.xWindow position X de la souris dans la fenêtre
posMouse.yWindow position Y de la souris dans la fenêtre
posMouse.wWindow largeur de la fenêtre
posMouse.hWindow hauteur de la fenêtre
posMouse.xPage position X de la souris dans la page
posMouse.yPage position Y de la souris dans la page
posMouse.wPage largeur de la page
posMouse.hPage hauteur de la page
posMouse.message message que l'on pourrait ajouter à la div en phase de test
2) Affichage des coordonnées de la souris
- dans la barre de statut (pour IE)
- dans une div qui suit la souris à l'écran
en écrivant <body onmousemove="showPosMouse(event);">
Sous IE et Chrome, onmousemove dans le body ne retourne pas les coordonnées si la souris
est en dehors de la page (cas d'une page de faible hauteur ne dépassant une fenêtre).
Il est possible de mettre onmousemove dans la balise html.
Deux styles d'affichage sont proposés (position de la div par rapport à la souris):
- la div tourne autour de la souris en fonction de sa position sur l'écran
- la div reste en bas à droite de la souris mais ne sort pas de l'écran
* Pour changer de style, appeler la fonction: swapViewPosMouse(true)
Le paramètre peut être true ou false.
S'il n'y a pas de paramètre, la fonction fonctionne en bascule.
Par défaut, le style est true.
* Pour afficher les coordonnées, appeler la fonction: displayPosMouse(true)
Le paramètre false cachera l'affichage.
S'il n'y a pas de paramètre, la fonction fonctionne en bascule.
Par défaut, l'affichage est true.
* Pour afficher les coordonnées dans la barre de statut de IE, displayStatBarPosMouse(false)
Le paramètre false cachera l'affichage.
S'il n'y a pas de paramètre, la fonction fonctionne en bascule.
Par défaut, l'affichage est false.
* Pour afficher un message dans la div après les coordonnées de la souris: setMessagePosMouse(message);
(utile en phase de test pour éviter les alert() qui bloquent le déroulement)
Cette option permet de par exemple de faire afficher le résultat d'une variable, un attribut, ...
Exemple: setMessagePosMouse(var1 + var2); ou bien setMessagePosMouse(document.getElementById(idDiv). style.width);
Installation: <meta http-equiv="Content-Style-Type" content="text/css">
<script type="text/javascript" language="javascript" src="Styles/PosMouse.js"></script>
La div affichant les coordonnées n'a pas de style défini, sinon il ne pourrait être modifié.
pour changer le style de la div (couleur, fond, bordure, ...) il faut le déclarer en CSS.
Si la position "absolute" n'est pas précisée, la CSS prendra place en fin de document, sauf si la div
est déclarée dans la page à un endroit précis: <div id="divPosMouse"><br /></div>
<STYLE type="text/css">
#divPosMouse {
position:absolute;
margin:0;
padding:2p x 10px 2px 10px;
border:#FF0000 1px solid;
color:white;
background:black;
tex t-align:left;
font-weight:bold;
font-size:12 px;
}
</STYLE>
La fonction absolutePosMouse(true) permet de modifier la position (absolute ou static).
- true affiche en absolute, la div suit la souris,
- false affiche en static, la div est fixe.
S'il n'y a pas de paramètre, la fonction fonctionne en bascule.
Et si l'interface proposée ne convient, il toujours possible de ne récupérer que les coordonnées
de la souris et de les afficher dans sa propre div.
Placer sa div dans la page à l'endroit désiré avec le style de son choix: <div id="myDivPosMouse"><br /></div>
Ajouter la gestion de l'évènement dans le <body> ou le <html>: onmousemove="myPosMouse(event, 'myDivPosMouse');"
Puis créer sa propre fonction qui récupèrera et affichera les coordonnées de la souris:
<script language="javascript" type="text/javascript">
function myPosMouse(e, idElement){
var objDiv = document.getElementById(idElement);
getPosMouse (e);
objDiv.innerHTML = "Coordonnées de la souris<br />"
+ "Window: X = " + posMouse.xWindow + "  "
+ "Y = " + posMouse.yWindow + "  "
+ "Page: X = " + posMouse.xPage + "  " + "Y = " + posMouse.yPage;
}
</script>