11548 sujets

JavaScript, DOM et API Web HTML5

Bonjour,
Voilà le problème avec lequel je me bats depuis un petit moment.

Supposons le code suivant :
<html>
<head>
<title>Page</title>
<script language="JavaScript">

function trace(msg){
	var textArea = document.getElementById('textAreaToDebug'); 
	textArea.value = msg + '\n' + textArea.value;
}

</script>
</head>
<body onload="document.getElementById('fieldTest').focus();">

<input type="text" name="test" id="fieldTest" value="" onfocus="javascript:trace('Field.onFocus()');"/>
<br>

<button onclick="javascript:trace('Button.onClick()');" onfocus="javascript:trace('Button.onFocus()');" accesskey="V" type="button" value="valider" id="buttonId">Valider</button>
<br>

<textarea id="textAreaToDebug" cols="50" rows="10"></textarea><br>

</body>
</html>

Si on accède au bouton « Valider » en cliquant dessus ou en utilisant le raccourci clavier, FireFox déclenche le onFocus puis le onClick. Cela me semble tout à fait normal.

Avec IE, si on utilise la souris ou le raccourci clavier, les événements ne sont pas déclenchés dans le même ordre.
Au clavier : onClick puis onFocus
A la souris : onFocus puis onClick

Question : existe-t-il une parade, un correctif ou autre ?

Merci

PS : j’ai testé avec IE6 et FF2