IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

JavaScript Discussion :

problème event.keyCode Firefox


Sujet :

JavaScript

  1. #1
    Membre averti Avatar de Tdeny
    Profil pro
    Inscrit en
    Juin 2004
    Messages
    287
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2004
    Messages : 287
    Points : 311
    Points
    311
    Par défaut problème event.keyCode Firefox
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    function queltouche (evenement) {
    	var touche = window.event ? evenement.keyCode : evenement.which;
    	clav=String.fromCharCode(event.keyCode);
    	alert(touche);
    	}
    clav=String.fromCharCode(event.keyCode); ne marche pas avec Firefox, quel est son équivalent ?
    Vendez votre habileté et achetez l’ahurissement.
    L’habileté est seulement l’opinion, l’ahurissement l’intuition.
    Djalal–eddine Roumi

  2. #2
    Membre expert
    Avatar de FremyCompany
    Profil pro
    Étudiant
    Inscrit en
    Février 2006
    Messages
    2 532
    Détails du profil
    Informations personnelles :
    Âge : 32
    Localisation : Belgique

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Février 2006
    Messages : 2 532
    Points : 3 239
    Points
    3 239
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    function () {
       var KCode = (event.keyCode) ? (event.keyCode) : (event.which)
       var Char = String.fromCharCode(KCode)
    }
    Fremy
    Pour vos développements Web et une navigation agréable, le tout gratuit :
    1) IE 8 + IE7Pro (Si vous ne connaissez pas IE7Pro, essayez !)
    2) FF 3 + Web Developper Toolbar + AdBlockPlus + FireBug + GreaseMonkey

  3. #3
    Expert éminent sénior
    Avatar de Auteur
    Profil pro
    Inscrit en
    Avril 2004
    Messages
    7 649
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2004
    Messages : 7 649
    Points : 11 138
    Points
    11 138
    Par défaut
    bonjour,

    -Firefox ne connait pas window.event.
    -Sous Firefox l'événement doit être transmis de manière explicite (comme pour Netscape) : l'"event" est dans la ligne d'appel de la fonction.
    L'avantage avec ce code est qu'il fonctione aussi bien sous IE que sous Firefox (pas besoin de test du genre if (window.event) )
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
     
    <html>
    <head>
    <title></title>
     
    <script type="text/javascript">
    <!--
    function touche(ev)
    {
     document.getElementById("idOut").innerHTML+="Code= "+ev.keyCode+"<br>"
    }
     
    //-->
    </script>
    </head>
     
    <body>
     
    votre texte : <input type="text" value="" id="idIn" size="40" onkeyup="touche(event)">
    <br><br>
    <div id="idOut">
    &nbsp;
    </div>
     
     
    </body>
     
    </html>

  4. #4
    Membre expert
    Avatar de FremyCompany
    Profil pro
    Étudiant
    Inscrit en
    Février 2006
    Messages
    2 532
    Détails du profil
    Informations personnelles :
    Âge : 32
    Localisation : Belgique

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Février 2006
    Messages : 2 532
    Points : 3 239
    Points
    3 239
    Par défaut
    Mdrr, mais si il marche, alors ou est le problème ? lol
    Je suis en fait persuadé qu'il ne marche pas

    Si tu veux, tu peux en effet faire ca pour que FF prennent le Event depuis ta balise :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    function touche(event) {
      // Mon code
    }
    Sinon, j'ai toujours ca, mais c'est à apapter (c'est mon code perso et je suis sur qu'il marche, lol)

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    document.onkeypress_error=false
    document.onkeypress=function(e) {
       var Code=false
       var Src=new Object()
       if (e) {
          if (e.keyCode) {
             Code=e.keyCode
    		 Src=(e.srcElement)
          }
          else if (e.which) {
             Code=e.which
    		 Src=(e.target)
          }
       }
       if (window.event && (!Code)) {
    	   if (window.event.keyCode) {
    	      Code=window.event.keyCode
    		  Src=(window.event.srcElement)
    	   }
    	   else if (window.event.which) {
    	      Code=window.event.which
    		  Src=(window.event.target)
    	   }
       }
       if (Code) {
          window.KeyEvent(Code, Src) // Lance la gestion de l'evenement
       }
       else {
          // Impossible de lire le caractère...
    	  if (!document.onkeypress_error) {
    		alert("Votre navigateur n'est pas totalement compatible avec ce site...\n" +
                              "Veuillez le mettre à jour.");
    		document.onkeypress_error=true;
    		return false;
    	  }
       }
       return true;
    }
     
    window.KeyEvent(Code, Src) = function () {}
    Fremy
    Pour vos développements Web et une navigation agréable, le tout gratuit :
    1) IE 8 + IE7Pro (Si vous ne connaissez pas IE7Pro, essayez !)
    2) FF 3 + Web Developper Toolbar + AdBlockPlus + FireBug + GreaseMonkey

  5. #5
    Membre averti Avatar de speedev
    Profil pro
    Développeur Web
    Inscrit en
    Mai 2006
    Messages
    1 051
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Mai 2006
    Messages : 1 051
    Points : 439
    Points
    439
    Par défaut
    Voilà une fonction qu'on a developpé simplement pour détecter les keyCode et Which.... Elle permet ici de désactiver les touches numériques et éventuellement d'activer telle ou telle touche de navigation

    Appel

    onKeypress='javascript:return(controle_touche(event.keyCode,event.which,navigator.appName,event.ctrlKey));
    Fonction

    function controle_touche_chiffre(key,which,appli,ctrl)
    {
    active = true;

    if (appli == 'Microsoft Internet Explorer')
    {
    active = false;

    // Numériques
    if (key >= 48 && key <=57)
    active=true;

    switch (key)
    {
    case 3 : // Entrée
    case 13 : // Retour chariot
    case 8 : // Retour arrière
    case 9 : // Tabulation
    case 27 : // Echappement
    case 127 : // Effacement
    case 5 : // Aide
    case 1 : // Début
    case 4 : // Fin
    case 11 : // Haut de page
    case 12 : // Bas de page
    case 28 : // Flèche gauche
    case 29 : // Flèche droite
    case 30 : // Flèche haut
    case 31 : // Flèche bas
    case 60 : // <
    case 61 : // =
    case 62 : // >
    case 33 : // !
    case 47 : // /
    active = true;
    break;
    }
    }

    if (appli == 'Netscape')
    {
    active = false;

    //Ctrl
    if (ctrl)
    active=true;

    //numériques
    if (which >= 48 && which <=57)
    active=true;

    switch (which)
    {
    case 60 : // <
    case 61 : // =
    case 62 : // >
    case 33 : // !
    case 47 : // /
    active = true;
    break;
    }

    switch (key)
    {
    case 112 : // F1
    case 113 : // F2
    case 114 : // F3
    case 115 : // F4
    case 116 : // F5
    case 117 : // F6
    case 118 : // F7
    case 119 : // F8
    case 120 : // F9
    case 121 : // F10
    case 122 : // F11
    case 123 : // F12
    case 13 : // Retour chariot
    case 8 : // BackSpace
    case 9 : // Tabulation
    case 27 : // Echappement
    case 46 : // Supprimer
    case 36 : // Début
    case 35 : // Fin
    case 11 : // Haut de page
    case 12 : // Bas de page
    case 37 : // Flèche gauche
    case 39 : // Flèche droite
    case 38 : // Flèche haut
    case 40 : // Flèche bas
    active = true;
    break;
    }
    }

    return active;
    }
    Développeur Web sénior (2005) spécialisé Symfony2 - Je tiens mon petit blog tranquillement, viens faire un tour http://www.ikonenn.com

  6. #6
    Membre averti Avatar de Tdeny
    Profil pro
    Inscrit en
    Juin 2004
    Messages
    287
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2004
    Messages : 287
    Points : 311
    Points
    311
    Par défaut Correction
    Merci, mais je vais être plus clair et excusez moi d'avoir tout mis.
    Il n'y a pas de problème pour la détection de la frappe et le renvoi du code touche.
    ça marche avec ça
    var touche = window.event ? evenement.keyCode : evenement.which;

    Le problème vient de ce que j'ai mis en dernier :
    clav=String.fromCharCode(event.keyCode);
    C'est à dire la transformation en caractère (String) du code récupéré.
    La ça marche avec IE et Opera, pas avec Firefox.
    Pour lui j'essaye avec charCodeAt, mais il faut récupérer un chiffre au lieu d'un code, je continue...
    Vendez votre habileté et achetez l’ahurissement.
    L’habileté est seulement l’opinion, l’ahurissement l’intuition.
    Djalal–eddine Roumi

  7. #7
    Membre expert
    Avatar de FremyCompany
    Profil pro
    Étudiant
    Inscrit en
    Février 2006
    Messages
    2 532
    Détails du profil
    Informations personnelles :
    Âge : 32
    Localisation : Belgique

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Février 2006
    Messages : 2 532
    Points : 3 239
    Points
    3 239
    Par défaut
    ???
    A quoi ca sert de recuperer la touche si tu ne l'utilise pas ???
    ???

    String.fromCharCode(touche)
    Fremy
    Pour vos développements Web et une navigation agréable, le tout gratuit :
    1) IE 8 + IE7Pro (Si vous ne connaissez pas IE7Pro, essayez !)
    2) FF 3 + Web Developper Toolbar + AdBlockPlus + FireBug + GreaseMonkey

  8. #8
    Membre averti Avatar de Tdeny
    Profil pro
    Inscrit en
    Juin 2004
    Messages
    287
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2004
    Messages : 287
    Points : 311
    Points
    311
    Par défaut
    Je l'utilise mais je ne peux pas te mettre ici 550 lignes.
    Tout ça vient d'une calculatrice.
    function clavier(code) {
    //alert(code);
    <!-- data 0 9 --->
    if ((code >= 48 && code <= 57) || code == 46)
    {addonnee(clav);}
    <!--- operations +-*/ --->
    if (code == 42 || code == 43 || code == 45 || code == 47)
    { adfunction(clav); }
    ...
    --------------------------------------------

    function addonnee(nombre) {
    <!--- Si le calcul vient d'être fait et pas de fonction : Effacement --->
    if(action == 1 && actionF == 0) {
    C();
    }
    if(nombre == ".") {
    donnee = resultat;
    resultat = donnee.concat(nombre);
    document.forms['calculat'].result.value = resultat;
    }
    else {
    <!--- on enlève le zéro si on est à 0 -->
    if(resultat == "0") {resultat = "";}
    donnee = resultat;
    resultat = donnee.concat(nombre);
    document.forms['calculat'].result.value = resultat;
    <!--- Mise à 1 de la donnée Fonction à 0 -->
    actionD = 1; action = 0;

    }
    }
    Les données sont saisie par click sur bouton ou au clavier et en mose texte, entrées dans la variable de saisie pat concat.
    D'où le string.fromCharCode du code event, qui ne marche pas avec Firefox.
    Le récupère bien le code event de caractère de firefox, mais charCodeAt pourrait peut-être me permettre d'arriver à quelque chose.
    Vendez votre habileté et achetez l’ahurissement.
    L’habileté est seulement l’opinion, l’ahurissement l’intuition.
    Djalal–eddine Roumi

  9. #9
    Expert éminent sénior
    Avatar de Auteur
    Profil pro
    Inscrit en
    Avril 2004
    Messages
    7 649
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2004
    Messages : 7 649
    Points : 11 138
    Points
    11 138
    Par défaut
    String.fromCharCode(codeTouche) fonctionne avec Firefox et comme je te l'ai dit il faut passer les évenements d'une marnière particulière.

    Déclare l'événement dans la balise body, ou tout autre élément de ta page.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
     
    <html>
    <head>
    <title></title>
     
    <script type="text/javascript">
    <!--
    function touche(ev)
    {
     var code=ev.keyCode;
     document.getElementById("idOut").innerHTML+="Code= "+code+" car="+String.fromCharCode(code)+"<br>";
     
    }
     
    //-->
    </script>
    </head>
     
    <body onkeydown="touche(event)">
     
    <br><br>
    <div id="idOut">
    &nbsp;
    </div>
     
     
    </body>
     
    </html>
    charCodeAt permet de récupérer le code d'un caractère placé dans une chaîne. L'argument est la position de ce caractère et non son code ASCII.

Discussions similaires

  1. Problème getElementById via Firefox 1.0.7
    Par SunSyS dans le forum Général JavaScript
    Réponses: 10
    Dernier message: 18/02/2006, 16h02
  2. [débutante] problème affichage sous Firefox
    Par silversky dans le forum Balisage (X)HTML et validation W3C
    Réponses: 2
    Dernier message: 16/09/2005, 13h58
  3. Problème CSS avec Firefox
    Par Bisûnûrs dans le forum Mise en page CSS
    Réponses: 1
    Dernier message: 20/08/2005, 15h29
  4. Problème javascript avec Firefox
    Par Bisûnûrs dans le forum Général JavaScript
    Réponses: 1
    Dernier message: 18/08/2005, 17h18
  5. event.keyCode undefined sous FireFox
    Par dupin40 dans le forum Général JavaScript
    Réponses: 2
    Dernier message: 17/03/2005, 11h15

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo