OVH Cloud OVH Cloud

Pas sous FireFox !

13 réponses
Avatar
Pierre
Bonjour à toutes et à tous,

Pouvez-vous me dire pourquoi ce code fonctionne sous IE6 mais pas avec
FireFox :

<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<meta content="text/html; charset=ISO-8859-1"
http-equiv="content-type">
<title></title>
</head>
<body">
<script language="JavaScript">
<!--
function process_keypress()
{
if (window.event.type == "keypress" & window.event.keyCode == 13)
{alert("touche ENTREE inopérante.");}
else
{alert('Touche appuyée : Autre');}
}
document.onkeypress = process_keypress;
// -->
</script>
</body>
</html>

Sous FireFox, il ne se passe rien du tout !

Que faut-il faire ?

Merci de votre aide.

Pierre

3 réponses

1 2
Avatar
O.L.


C'est très très moche comme méthode avec le 'if navigator.appName ' et la
duplication du code qui suit.




Je n'ai jamais dit le contraire ;-)
"Voici un exemple (pas le meilleur, mais bon ...)"

Ta solution avec le if(!e)e=window.event; est en effet bien meilleure.

@+

Pour moi qui suis débutant en la matière, quelle est la différence entre un

:

if (window.event.type == "keypress" & ...)

et un :

if(!e){
//for IE
e = window.event;

Merci de vos avis.

Pierre.


ERREUR : à la place de

if (window.event.type == "keypress" & ...)



il faut que je dise :

if(navigator.appName=='Microsoft Internet Explorer') {

Merci de votre compréhension.

Pierre.



La différence, c'est que ça a des chances de marcher plus souvent, car
le test sur le nom du navigateur n'est pas une très bonne méthode : que
se passe t'il sous Safari, Opera ... ? => risque de problèmes.

Le test pour récupérer l'objet événement (if(!e) ...) permet de
s'adapter à toutes les situations : celles où l'Event est passé en
argument (la variable e existe et peut être utilisée), et celles où e
est vide, et où il faut aller chercher l'événement dans window.event.


--
Olivier Ligny
Créateur web free-lance / www.cyber-tamtam.net




Avatar
Pierre




C'est très très moche comme méthode avec le 'if navigator.appName '
et la duplication du code qui suit.





Je n'ai jamais dit le contraire ;-)
"Voici un exemple (pas le meilleur, mais bon ...)"

Ta solution avec le if(!e)e=window.event; est en effet bien meilleure.

@+

Pour moi qui suis débutant en la matière, quelle est la différence

entre un :

if (window.event.type == "keypress" & ...)

et un :

if(!e){
//for IE
e = window.event;

Merci de vos avis.

Pierre.



ERREUR : à la place de

if (window.event.type == "keypress" & ...)



il faut que je dise :

if(navigator.appName=='Microsoft Internet Explorer') {

Merci de votre compréhension.

Pierre.




La différence, c'est que ça a des chances de marcher plus souvent, car
le test sur le nom du navigateur n'est pas une très bonne méthode : que
se passe t'il sous Safari, Opera ... ? => risque de problèmes.

Le test pour récupérer l'objet événement (if(!e) ...) permet de
s'adapter à toutes les situations : celles où l'Event est passé en
argument (la variable e existe et peut être utilisée), et celles où e
est vide, et où il faut aller chercher l'événement dans window.event.


OK, c'est clair.


Merci.

Pierre.





Avatar
Pierre




C'est très très moche comme méthode avec le 'if navigator.appName '
et la duplication du code qui suit.





Je n'ai jamais dit le contraire ;-)
"Voici un exemple (pas le meilleur, mais bon ...)"

Ta solution avec le if(!e)e=window.event; est en effet bien meilleure.

@+

Pour moi qui suis débutant en la matière, quelle est la différence

entre un :

if (window.event.type == "keypress" & ...)

et un :

if(!e){
//for IE
e = window.event;

Merci de vos avis.

Pierre.



ERREUR : à la place de

if (window.event.type == "keypress" & ...)



il faut que je dise :

if(navigator.appName=='Microsoft Internet Explorer') {

Merci de votre compréhension.

Pierre.




La différence, c'est que ça a des chances de marcher plus souvent, car
le test sur le nom du navigateur n'est pas une très bonne méthode : que
se passe t'il sous Safari, Opera ... ? => risque de problèmes.

Le test pour récupérer l'objet événement (if(!e) ...) permet de
s'adapter à toutes les situations : celles où l'Event est passé en
argument (la variable e existe et peut être utilisée), et celles où e
est vide, et où il faut aller chercher l'événement dans window.event.


En fait, "e" est défini avec IE6 et FireFox mais le problème est

ailleurs, on ne recupère pas les mêmes informations selon le navigateur.
Exemple :

Touche IE6 FireFox

"enter" charCode = undefined charCode = 0
keyCode = 13 keyCode = 13

"Espace" charCode = undefined charCode = 32
keyCode = 32 keyCode = 0

"H" charCode = undefined charCode = 104
keyCode = 104 keyCode = 0

En conclusion, si par exemple je veux faire un test sur la barre d'espace

Conclusion : si je veux faire un test sur la barre d'espace, il faut que
j'écrive :

if (e.charCode == 32 || e.keyCode == 32)

... c'est pas tout simple tout ça.

Cordialement.

Pierre.





1 2