11548 sujets

JavaScript, DOM et API Web HTML5

Bonjour,

j'ai fait une fonction javascript qui permet d'afficher les coordonnées de la souris dans 2 éléments <input>. Mon problème est que cette fonction ne marche pas sous IE.

Quelqu'un saurait me dire pourquoi ?

voici mon code :
<html>

<head>
<title>titre</title>
<script type="text/javascript" language="JavaScript1.2">
function getMouseXY(even) {
var posX=even.layerX;
var posY=even.layerY;
if(posX!=null)document.form1.formtext1.value=posX;
if(posY!=null)document.form1.formtext2.value=posY;
}
</script>
</head>

<body bgcolor="white" text="black" link="blue" vlink="purple" alink="red">
<form name="form1">
<p><input type="text" name="formtext1" value="0"><input type="text" name="formtext2" value="0"></p>
</form>


<script type="text/javascript" language="JavaScript1.2">
document.onmousemove = getMouseXY;
</script>

</body>

</html>




Merci Smiley smile

Poich
Modifié par Poich (29 Jul 2005 - 17:54)
C’est normal, IE ne connait pas les propriétés layerX et layerY, lesquelles n’existent de toute façon pas dans le DOM du W3C.

De plus, IE ne suit pas la norme en ce qui concerne le moyen de récupérer l’objet d’évènement. Ajoute au début de ta fonction:

if( !even ) even = window.event;
J'ai ajouté au début de ma fonction :
if( !even ) even = window.event;



mais ça ne change rien. Forcément car tu dis que IE ne reconnait pas les propriétés layerX et layerY. Donc il n'y a pas de solution ??

<html>
  <head>
<script type="text/javascript">
var isIE = (navigator.userAgent.indexOf("MSIE")>-1)

function traceMouse(e) {
  if(isIE){
    /* ajout à IE les propriétés standards */
    e.pageX = e.clientX+document.body.scrollLeft;
    e.pageY = e.clientY+document.body.scrollTop;
  }
  var posX = e.pageX;
  var posY = e.pageY;
  doIt(posX, posY);
}

function doIt(posx, posy) {
  document.getElementById("xx").value = posx;
  document.getElementById("yy").value = posy;
}
</script>

  </head>
  <body onmousemove="traceMouse(event)">

    x : <input type="text" id="xx"><br>
    y : <input type="text" id="yy">

  </body>
</html>
J'ai ce script qui marche


	function position(e) {
		xx = (navigator.appName.substring(0,3) == "Net") ? e.pageX : event.x+document.body.scrollLeft;
		yy = (navigator.appName.substring(0,3) == "Net") ? e.pageY : event.y+document.body.scrollTop;
	}
	if(navigator.appName.substring(0,3) == "Net") document.captureEvents(Event.MOUSEMOVE);
	document.onmousemove = position;


Par contre je n'ai pas le nom de l'auteur et je ne me rappelle plus où je l'ai eu.
auteur : cerveau
lieu : cerveau et doc JS

C'est du classique à mort, copyrighter ça ou le breveter, y a que crosoft pour le faire !
Olivier a écrit :
auteur : cerveau
lieu : cerveau et doc JS

C'est du classique à mort, copyrighter ça ou le breveter, y a que crosoft pour le faire !


LOL t'es remonté Olivier. C'était pour ne pas poser le script de manière brut et de partir comme ça Smiley cligne