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

10 réponses

1 2
Avatar
O.L.
Le 12/12/2005, Pierre a supposé :
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


Je crois que window.event n'existe pas sous FireFox.

A la place, il faut utiliser la variable passée en argument de ta
fonction. Voici un exemple (pas le meilleur, mais bon ...) :

function process_keypress(evt) {
if(navigator.appName=='Microsoft Internet Explorer') {
if(window.event.type == "keypress" && window.event.keyCode == 13)
alert("touche ENTREE inopérante.");
else
alert('Touche appuyée : Autre');
}
else {
if(evt.type == "keypress" && evt.keyCode == 13)
alert("touche ENTREE inopérante.");
else
alert('Touche appuyée : Autre');
}
}



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

Avatar
CrazyCat
Pierre wrote:
<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>


window.event has no properties.

Tu devrais regarder la compatibilité des events avec FF

--
Aide informatique: http://help-info.forumactif.com
Humour: http://www.chatfou.com
Tchattez en liberté: http://www.crazy-irc.net

Avatar
Pierre
Le 12/12/2005, Pierre a supposé :

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



Je crois que window.event n'existe pas sous FireFox.

A la place, il faut utiliser la variable passée en argument de ta
fonction. Voici un exemple (pas le meilleur, mais bon ...) :

function process_keypress(evt) {
if(navigator.appName=='Microsoft Internet Explorer') {
if(window.event.type == "keypress" && window.event.keyCode == 13)
alert("touche ENTREE inopérante.");
else
alert('Touche appuyée : Autre');
}
else {
if(evt.type == "keypress" && evt.keyCode == 13)
alert("touche ENTREE inopérante.");
else
alert('Touche appuyée : Autre');
}
}

Merci pour cette info. J'ai réussi à le faire fonctionner.


Cordialement.

Pierre


Avatar
Pierre
Pierre wrote:

<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>



window.event has no properties.

Tu devrais regarder la compatibilité des events avec FF

Merci. J'ai effectivement trouvé la solution en cherchant la variable

event dans "DOM".

Pierre


Avatar
Jean-Marc Desperrier
Pierre wrote:
Je crois que window.event n'existe pas sous FireFox.

A la place, il faut utiliser la variable passée en argument de ta
function process_keypress(evt) {
if(navigator.appName=='Microsoft Internet Explorer') {
if(window.event.type == "keypress" && window.event.keyCode == 13)
[...]


}
else {
if(evt.type == "keypress" && evt.keyCode == 13)
[...]



Merci pour cette info. J'ai réussi à le faire fonctionner.



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

On peut faire mieux avec très peu d'effort :
http://www.devx.com/webdev/10MinuteSolution/27134/0/page/3
function keyListener(e){
if(!e){
//for IE
e = window.event;
}
if(e.keyCode=7 [...]

Et puis sinon il y a des sites qui proposent de partir sur des solutions
plus complètes :
http://www.dithered.com/javascript/dom2_events/


Avatar
Jean-Marc Desperrier
Jean-Marc Desperrier wrote:
On peut faire mieux avec très peu d'effort :
http://www.devx.com/webdev/10MinuteSolution/27134/0/page/3
function keyListener(e){
if(!e){
//for IE
e = window.event;
}
if(e.keyCode=7 [...]

Et puis sinon il y a des sites qui proposent de partir sur des solutions
plus complètes :
http://www.dithered.com/javascript/dom2_events/


Tiens, je viens de trouver cette page de Doson Rosenberg qui couvre
beaucoup d'aspects de ce dont il faut se soucier pour adapter des pages
web conçue uniquement pour IE de manière à supporter Firefox et les
standards, dont ce problème entre autres :
http://www-128.ibm.com/developerworks/web/library/wa-ie2mozgd/

Avatar
Pierre
Jean-Marc Desperrier wrote:

On peut faire mieux avec très peu d'effort :
http://www.devx.com/webdev/10MinuteSolution/27134/0/page/3
function keyListener(e){
if(!e){
//for IE
e = window.event;
}
if(e.keyCode=7 [...]

Et puis sinon il y a des sites qui proposent de partir sur des
solutions plus complètes :
http://www.dithered.com/javascript/dom2_events/



Tiens, je viens de trouver cette page de Doson Rosenberg qui couvre
beaucoup d'aspects de ce dont il faut se soucier pour adapter des pages
web conçue uniquement pour IE de manière à supporter Firefox et les
standards, dont ce problème entre autres :
http://www-128.ibm.com/developerworks/web/library/wa-ie2mozgd/


Merci beaucoup pour ces liens intéressants.


Pierre


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.

@+

--
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.


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.



1 2