# \[JSCRIPT\]marche pas sous Firefox

**URL:** <https://forum.geekzone.fr/t/jscript-marche-pas-sous-firefox/31392>\
**Category:** Dev\
**Created:** [Octobre 19, 2006, 10:26 UTC](https://forum.geekzone.fr/t/jscript-marche-pas-sous-firefox/31392 "2006-10-19T10:26:08Z")\
**Posts on this page:** 12\
**Page:** 1

<div class="post-metadata">

**Author:** ![mono](https://forum.geekzone.fr/user_avatar/forum.geekzone.fr/mono/32/1309_2.png) [@mono](https://forum.geekzone.fr/u/mono)\
**Post date:** [Octobre 19, 2006, 10:26 UTC](https://forum.geekzone.fr/t/jscript-marche-pas-sous-firefox/31392/1 "2006-10-19T10:26:08Z")

</div>

Bonjour tout le monde !!

J’ai un script pas compliqué : il remplace la fonction de la touche ENTREE par la touche TAB

`<script language="javascript">
function process_keydown(e) {
		if(window.event){
				if (window.event.type == "keydown" && window.event.keyCode == 13)
				window.event.keyCode=9;
		}
		if(e){
				if (e.type == "keydown" && e.keyCode == 13){
						e.keyCode=9; //C'est là qu'est le probleme !!!
						return true;
				}
		}
}
document.onkeydown = process_keydown;
</script>`

fonction que j’appelle dans

```auto

```

mais voila, sous IE, ca marche mais pas sous Firefox ou il me met un zoli message ( vu à l’aide de FireBug) : “setting a property that has only a getter”

merci à vous B)

---

<div class="post-metadata">

**Author:** ![rorotaz](https://forum.geekzone.fr/user_avatar/forum.geekzone.fr/rorotaz/32/1527_2.png) [@rorotaz](https://forum.geekzone.fr/u/rorotaz)\
**Post date:** [Octobre 19, 2006, 10:57 UTC](https://forum.geekzone.fr/t/jscript-marche-pas-sous-firefox/31392/2 "2006-10-19T10:57:07Z")

</div>

Moi, pour traiter les évènements clavier en Javascript, je procède comme suit :

[code]if (isNetscape) {  
document.captureEvents(Event.KEYDOWN);  
}  
document.onkeydown = doKeyDown;

function doKeyDown(e) {  
var whichASC = isNetscape ? e.which : event.keyCode;  
switch (whichASC) {  
case XXX: // XXX est le code de ta touche…  
// code ici…  
break;  
}  
}[/code]

Tu peux toujours essayer avec ce code voir si ça passe mieux…

---

<div class="post-metadata">

**Author:** ![mono](https://forum.geekzone.fr/user_avatar/forum.geekzone.fr/mono/32/1309_2.png) [@mono](https://forum.geekzone.fr/u/mono)\
**Post date:** [Octobre 19, 2006, 12:21 UTC](https://forum.geekzone.fr/t/jscript-marche-pas-sous-firefox/31392/3 "2006-10-19T12:21:23Z")

</div>

merci roro, mais le probleme vient du fait que je veux réassigner une valeur à une touche DEJA pressée ( d’apres ce que j’ai compris ) …

est - ce que toi, dans tes scripts, tu fais ça ???

---

<div class="post-metadata">

**Author:** ![rorotaz](https://forum.geekzone.fr/user_avatar/forum.geekzone.fr/rorotaz/32/1527_2.png) [@rorotaz](https://forum.geekzone.fr/u/rorotaz)\
**Post date:** [Octobre 19, 2006, 12:45 UTC](https://forum.geekzone.fr/t/jscript-marche-pas-sous-firefox/31392/4 "2006-10-19T12:45:34Z")

</div>

Ah oui, effectivement. Pour Firefox, ton “e.keyCode” est en lecture seule, d’où le souci.  
De mon côté, je ne fais pas ce genre de choses, je fais “juste” des traitements adaptés à chaque touche.

Sinon, une piste :  
Dans ton code :

`if (e.type == "keydown" && e.keyCode == 13){
	e.keyCode=9; //C'est là qu'est le probleme !!!
	return true;
}`

Tu retournes false (ce qui devrait annuler la prise en compte de la touche Entrée), et tu crées un nouvel évènement clavier correspondant à la touche Tab.  
Bon, je propose ça, mais je ne sais ni comment faire, ni même si c’est possible B)

---

<div class="post-metadata">

**Author:** ![rorotaz](https://forum.geekzone.fr/user_avatar/forum.geekzone.fr/rorotaz/32/1527_2.png) [@rorotaz](https://forum.geekzone.fr/u/rorotaz)\
**Post date:** [Octobre 19, 2006, 12:56 UTC](https://forum.geekzone.fr/t/jscript-marche-pas-sous-firefox/31392/5 "2006-10-19T12:56:52Z")

</div>

Bon, en faisant une petite recherche on da net, je tombe sur cette [page](http://forums.mozillazine.org/viewtopic.php?t=457489), avec, en citation de Will Rickards WT :

"[i]  
The most common scenario I encounter for needing this in an html form. For some reason hitting enter on any of the input controls, even checkboxes, causes the form to submit. The user didn’t really want to submit the form. The user expected to go to the next field or something. So we translate (is that better than substitute?) the enter (13) keycode into a tab (9) and pass that through. In IE works fine. If FF no go, it doesn’t complain about the assignment, it just processes the enter and submits the form. Maybe it has to do with different event models.

Yes I could probably improve the solution above for FF by not only cancelling the key event but by also figuring out which control is next in the tab order and doing a control.focus(). And that would solve my problem and might be made to work in both browsers. Anybody want to take a stab at implementing it?  
[/i]"

Son idée me parait pas mal.  
A la limite, tu pourrais essayer de donner en argument à process\_keydown le prochain élément du formulaire. Vu que c’est de la génération dynamique via PHP, ça doit être possible.  
Dans ton code, tu ferais ça pour process\_keydown :

`function process_keydown(e, nextObject) {
		if(window.event){
				if (window.event.type == "keydown" && window.event.keyCode == 13)
				window.event.keyCode=9;
		}
		if(e){
				if (e.type == "keydown" && e.keyCode == 13){
						nextObject.focus();
						return false;
				}
		}
}`

---

<div class="post-metadata">

**Author:** ![mono](https://forum.geekzone.fr/user_avatar/forum.geekzone.fr/mono/32/1309_2.png) [@mono](https://forum.geekzone.fr/u/mono)\
**Post date:** [Octobre 19, 2006, 1:08 UTC](https://forum.geekzone.fr/t/jscript-marche-pas-sous-firefox/31392/6 "2006-10-19T13:08:54Z")

</div>

[quote=“rorotaz, post:5, topic: 31392”]Son idée me parait pas mal.  
A la limite, tu pourrais essayer de donner en argument à process\_keydown le prochain élément du formulaire. Vu que c’est de la génération dynamique via PHP, ça doit être possible.[/quote]  
j’essaie ca de suite B)  
bon ben ca marche pas … mais je comprends plus rien !!! quand je tape Entréé, le curseur va bien au suivant , mais il valide quand meme …

Et j’ai une belle erreur JSCRIPT toute folle

[Exception… “‘Permission refusée de modifier la propriété XULElement.selectedIndex’ when calling method: [nsIAutoCompletePopup::selectedIndex]” nsresult: “0x8057001e (NS\_ERROR\_XPC\_JS\_THREW\_STRING)” location: “JS frame :: [http://192.168.30.4/ajout\_note\_classe.php](http://192.168.30.4/ajout_note_classe.php) :: process\_keydown :: line 15” data: no]

---

<div class="post-metadata">

**Author:** ![rorotaz](https://forum.geekzone.fr/user_avatar/forum.geekzone.fr/rorotaz/32/1527_2.png) [@rorotaz](https://forum.geekzone.fr/u/rorotaz)\
**Post date:** [Octobre 19, 2006, 1:13 UTC](https://forum.geekzone.fr/t/jscript-marche-pas-sous-firefox/31392/7 "2006-10-19T13:13:02Z")

</div>

Oki, tiens nous au courant.  
Ah, les “joies” du Javascript et ses @ç#$^$ù d’incompatibilités entre les broutineurs…

---

<div class="post-metadata">

**Author:** ![mono](https://forum.geekzone.fr/user_avatar/forum.geekzone.fr/mono/32/1309_2.png) [@mono](https://forum.geekzone.fr/u/mono)\
**Post date:** [Octobre 20, 2006, 8:08 UTC](https://forum.geekzone.fr/t/jscript-marche-pas-sous-firefox/31392/8 "2006-10-20T08:08:51Z")

</div>

juste un petit up, pour dire que ca marche toujours pas sous FF … si qqun de gentil pourrait m’aider , SVP !!!

quand je tape Entrée, le curseur va bien au suivant , mais il valide quand meme …

Et j’ai une belle erreur JSCRIPT toute folle

[Exception… “‘Permission refusée de modifier la propriété XULElement.selectedIndex’ when calling method: [nsIAutoCompletePopup::selectedIndex]” nsresult: “0x8057001e (NS\_ERROR\_XPC\_JS\_THREW\_STRING)” location: “JS frame :: [http://192.168.30.4/ajout\_note\_classe.php](http://192.168.30.4/ajout_note_classe.php) :: process\_keydown :: line 15” data: no]  
A croire que je suisle seul a vouloir faire ca … B)

---

<div class="post-metadata">

**Author:** ![rorotaz](https://forum.geekzone.fr/user_avatar/forum.geekzone.fr/rorotaz/32/1527_2.png) [@rorotaz](https://forum.geekzone.fr/u/rorotaz)\
**Post date:** [Octobre 20, 2006, 8:24 UTC](https://forum.geekzone.fr/t/jscript-marche-pas-sous-firefox/31392/9 "2006-10-20T08:24:50Z")

</div>

> [@mono](#):
>
> A croire que je suisle seul a vouloir faire ca …

Bah non, vu que dans le message du forum que je citais, les gars voulaient faire comme toi (sans toutefois apporter de réponses).  
Pour ton souci, question bête : Dans ta gestion de la touche Entrée, est-ce que tu retournes bien un false juste après ?

---

<div class="post-metadata">

**Author:** ![mono](https://forum.geekzone.fr/user_avatar/forum.geekzone.fr/mono/32/1309_2.png) [@mono](https://forum.geekzone.fr/u/mono)\
**Post date:** [Octobre 20, 2006, 9:29 UTC](https://forum.geekzone.fr/t/jscript-marche-pas-sous-firefox/31392/10 "2006-10-20T09:29:04Z")

</div>

`function process_keydown(e,nextObject) {
		if(window.event){
				if (window.event.type == "keydown" && window.event.keyCode == 13)
				window.event.keyCode=9;
		}
		if(e){
				if (e.type == "keydown" && e.keyCode == 13){
						alert("prochain="+nextObject);		
						nextObject.focus();  
						return false;  
				}
		}
}`

mon appel

```auto

```

ou est le probleme ? erreur JScript : "nextObject has no property " … B)

---

<div class="post-metadata">

**Author:** ![rorotaz](https://forum.geekzone.fr/user_avatar/forum.geekzone.fr/rorotaz/32/1527_2.png) [@rorotaz](https://forum.geekzone.fr/u/rorotaz)\
**Post date:** [Octobre 20, 2006, 9:53 UTC](https://forum.geekzone.fr/t/jscript-marche-pas-sous-firefox/31392/11 "2006-10-20T09:53:11Z")

</div>

J’y connais pas grand chose en PHP, mais peut-être que tu arrives au dernier élément de ton formulaire, et donc celui-ci n’a pas de suivant. Pour t’éviter le pb JS :

`function process_keydown(e,nextObject) {
		if(window.event){
				if (window.event.type == "keydown" && window.event.keyCode == 13)
				window.event.keyCode=9;
		}
		if(e){
				if (e.type == "keydown" && e.keyCode == 13){
						alert("prochain="+nextObject);
						if (nextObject) {
								nextObject.focus();
						}
						return false;  
				}
		}
}`

---

<div class="post-metadata">

**Author:** ![mono](https://forum.geekzone.fr/user_avatar/forum.geekzone.fr/mono/32/1309_2.png) [@mono](https://forum.geekzone.fr/u/mono)\
**Post date:** [Octobre 20, 2006, 10:26 UTC](https://forum.geekzone.fr/t/jscript-marche-pas-sous-firefox/31392/12 "2006-10-20T10:26:28Z")

</div>

[quote=“rorotaz, post:11, topic: 31392”]if(e){  
if (e.type == “keydown” && e.keyCode == 13){  
alert(“prochain=”+nextObject);  
if (nextObject) {  
nextObject.focus();  
}  
return false;  
}  
}[/quote]

bon en faisant alert=(“prochain”+nextObject.focus() ) il me met : prochain= undefined … y’a quelque chose que j’ai du loupé …
