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 :

code key de F5 : 116 / code key de 't' :116


Sujet :

JavaScript

  1. #1
    Membre régulier
    Inscrit en
    Février 2006
    Messages
    283
    Détails du profil
    Informations forums :
    Inscription : Février 2006
    Messages : 283
    Points : 91
    Points
    91
    Par défaut code key de F5 : 116 / code key de 't' :116
    Quelqu'un pourrait-il m'éclairer sur ce point. Je fais une détection du F5.

    if (event.keyCode == 116)
    {
    alert('test');
    event.keyCode=0;
    return false;
    }

    F5 raffraichit toujours la page , donc problème
    Par contre la touche 't' lance la fonction ?
    Effectivement, dans la table des codes, t possède la même valeur : 116

    KESAKO ?

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

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

    F5 raffraichit toujours la page , donc problème
    Par contre la touche 't' lance la fonction ?
    Effectivement, dans la table des codes, t possède la même valeur : 116
    lorsque tu appuies sur "t" ta page est rafraichie ??

    Chez moi keyCode renvoie le code 84 pour le t et 116 pour F5.
    Essaye avec ceci :
    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
     
    <html>
    <head>
    <title></title>
     
    <script type="text/javascript">
    <!--
    function touchesSpeciales(ev)
    {
      var alt = ev.altKey;
      var shift = ev.shiftKey;
      var ctrl = ev.ctrlKey;
      var touche = ev.keyCode;
      var codeHTML="";
     
      if (shift)
         codeHTML += "shift + ";
      if (ctrl)
         codeHTML +="ctrl + ";
      if (alt)
         codeHTML += "alt + ";
      if (touche>31)
      {
       codeHTML += touche+"<br>";;
       document.getElementById("out").innerHTML += codeHTML;
      }
    }
    //-->
    </script>
     
    </head>
     
    <body onkeyup="touchesSpeciales(event)">
    <div id="out"></div>
     
    </body>
     
    </html>
    que ce soit alt+t, shift+t, caps+t, altGr+t, alt+t, keyCode renvoie toujours 84...

    [edit] je me demande si un doctype pourrait influencer la valeur renvoyée par keyCode. A voir.[/edit]

  3. #3
    Membre régulier
    Inscrit en
    Février 2006
    Messages
    283
    Détails du profil
    Informations forums :
    Inscription : Février 2006
    Messages : 283
    Points : 91
    Points
    91
    Par défaut
    en fait non, t ne raffraichit pas la page. Par contre si je mets un témoin dans la fonction qui teste 116, t réagit. Et F5 raffraichit la page sans passer par ma fonction.
    Je teste ton code

  4. #4
    Membre régulier
    Inscrit en
    Février 2006
    Messages
    283
    Détails du profil
    Informations forums :
    Inscription : Février 2006
    Messages : 283
    Points : 91
    Points
    91
    Par défaut
    alors y a aucun doctype.
    le code 84 c'est T mais 116 c'est t

  5. #5
    Membre expert
    Avatar de FremyCompany
    Profil pro
    Étudiant
    Inscrit en
    Février 2006
    Messages
    2 532
    Détails du profil
    Informations personnelles :
    Âge : 33
    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, tu y tiens toi, à tes suppression de fonctions

    Je te l'ai déjà dit mille fois, on ne PEUT PAS supprimer une fonction comme actualiser avec F5, fullscreen avec F11, ...

    Tu peux executer du code EN PLUS de la fonction du navigateur (et encore, pas dans tous les cas) mais jamais (ou rarement) en remplacement de celui-ci...

    Et je ne suis pas sur que F5 aie 116 comme code ASCII (ou autre)....
    pour moi 116, c'est "t"...


    (74 hexadécimal equivalent bien à 116 decimal)

  6. #6
    Membre régulier
    Inscrit en
    Février 2006
    Messages
    283
    Détails du profil
    Informations forums :
    Inscription : Février 2006
    Messages : 283
    Points : 91
    Points
    91
    Par défaut
    F5 a le code ASCII 116 et oui !!!!

    [F1] 112 - - -
    [F2] 113 - - -
    [F3] 114 - - -
    [F4] 115 - - -
    [F5] 116 - - -
    [F6] 117 - - -
    [F7] 118 - - -
    [F8] 119 - - -
    [F9] 120 - - -
    [F10] 121 - - -
    [F11] 122 - - -
    [F12] 123 - - -



    Button: keyCode: NumLock: CapsLock: ScrollLock:

    [BackSpace] 8 - - -
    [Tab] 9 - - -

    [NumPad 5] 12 no - -
    [Return / Enter] 13 - - -

    [Shift] 16 - - -
    [Ctrl] 17 - - -
    [Alt] 18 - - -
    [Pause / Break] 19 - - -
    [CapsLock] 20 - - -

    [Esc] 27 - - -

    [Space] 32 - - -
    [Page Up] 33 - - -
    [Page Down] 34 - - -
    [End] 35 - - -
    [Home] 36 - - -
    [LeftArrow] 37 - - -
    [UpArrow] 38 - - -
    [RightArrow] 39 - - -
    [DownArrow] 40 - - -

    [PrintScreen / SysRq] 44 - - -
    [Insert] 45 - - -
    [Delete] 46


    Button: keyCode:

    [BackSpace] 8

    [Return / Enter] 13

    [!] 33
    ["] 34
    [#] 35
    [$] 36
    [%] 37
    [&] 38
    ['] 39
    [(] 40
    [)] 41[*] 42
    [+] 43
    [,] 44
    [-] 45
    [.] 46
    [/] 47
    [0] 48
    [1] 49
    [2] 50
    [3] 51
    [4] 52
    [5] 53
    [6] 54
    [7] 55
    [8] 56
    [9] 57
    [:] 58
    [;] 59
    [<] 60
    [=] 61
    [>] 62
    [?] 63
    [@] 64
    [A] 65
    [B] 66
    [C] 67
    [D] 68
    [E] 69
    [F] 70
    [G] 71
    [H] 72
    [I] 73
    [J] 74
    [K] 75
    [L] 76
    [M] 77
    [N] 78
    [O] 79
    [P] 80
    [Q] 81
    [R] 82
    [S] 83
    [T] 84
    [U] 85
    [V] 86
    [W] 87
    [X] 88
    [Y] 89
    [Z] 90
    [[] 91
    [\] 92
    []] 93
    [^] 94
    [_] 95
    [`] 96
    [a] 97
    [b] 98
    [c] 99
    [d] 100
    [e] 101
    [f] 102
    [g] 103
    [h] 104
    [i] 105
    [j] 106
    [k] 107
    [l] 108
    [m] 109
    [n] 110
    [o] 111
    [p] 112
    [q] 113
    [r] 114
    [s] 115
    [t] 116
    [u] 117
    [v] 118
    [w] 119
    [x] 120
    [y] 121
    [z] 122
    [{] 123
    [|] 124
    [}] 125
    [~] 126

  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 : 33
    Localisation : Belgique

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Février 2006
    Messages : 2 532
    Points : 3 239
    Points
    3 239
    Par défaut
    Lol, c'est pas du ASCII alors... du ISO xxx ?
    Citation Envoyé par mappy
    F5 a le code ASCII 116 et oui !!!!
    D'ou tires-tu cette info ??

  8. #8
    Membre régulier
    Inscrit en
    Février 2006
    Messages
    283
    Détails du profil
    Informations forums :
    Inscription : Février 2006
    Messages : 283
    Points : 91
    Points
    91
    Par défaut
    comme je te l'ai expliqué hier, en asp.net (comme dans d'autres languages) utilisant IE ect... l'action de certaines touches peut être fatale à l'appli.
    Mets F5 refresh en recherche sur le net. Tu verras que cette manip est très souvent demandée et apparemment, ca fonctionne.

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

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Février 2006
    Messages : 2 532
    Points : 3 239
    Points
    3 239
    Par défaut
    Citation Envoyé par mappy
    comme je te l'ai expliqué hier, en asp.net (comme dans d'autres languages) utilisant IE ect... l'action de certaines touches peut être fatale à l'appli.
    Mets F5 refresh en recherche sur le net. Tu verras que cette manip est très souvent demandée et apparemment, ca fonctionne.
    Lol, merci, je travaille moi-même en .Net et je peux te dire que la solution est non pas de bloquer l'utilisateur mais plutot de PREVOIR l'utilisation dans ton code ASP .Net

  10. #10
    Membre régulier
    Inscrit en
    Février 2006
    Messages
    283
    Détails du profil
    Informations forums :
    Inscription : Février 2006
    Messages : 283
    Points : 91
    Points
    91
    Par défaut
    c'est ce que je t'expliquais dans un de mes précédents posts. On peut très bien mette un try mais il est beaucoup plus simple de bloquer.
    Et pour en reparler, ca fonctionne très bien en fait. j'ai supprimé l'appel depuis la balise body et je l'ai mis dans js.

    Il s'agit d'une appli intranet. Fremy, dis toi bien que moins il y a de possibilités inutiles pour l'utilisateur, mieux ca vaut pour ton programme.

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

    Informations forums :
    Inscription : Avril 2004
    Messages : 7 650
    Points : 11 142
    Points
    11 142
    Par défaut
    juste une précision pour les touches de fonctions (F1 à F10). Pour ce qui est F11 et F12 et touches window, la gestion est particulière.

    Les touches de fonctions renvoient en fait [b]2 codes[/b2] (en décimal) :
    00 + 59 : F1
    00 + 60 : F2
    ....
    00 + 68 : F10
    De même que les touches de direction.
    00 + 72 : haut
    00 + 80 : bas
    00 + 75 : gauche
    00 +77 : droite
    etc...
    pour le constater programmez avec un langage genre C++ ou Pascal.

    Maintenant il faut également distinguer le code ASCII du caractère et le numéro de la touche (qui n'est pas le code ASCII) :
    d'après moi keyCode ne renvoie pas le code ASCII du caractère mais le numéro de la touche. Comme je l'ai dit plus haut :
    que ce soit alt+t, shift+t, caps+t, altGr+t, alt+t, keyCode et T renvoie toujours 84...
    Je pense, par exemple, que le "a" d'un clavier AZERTY donnerait le même résultat que le "q" d'un clavier QWERTY.

  12. #12
    Membre régulier
    Inscrit en
    Février 2006
    Messages
    283
    Détails du profil
    Informations forums :
    Inscription : Février 2006
    Messages : 283
    Points : 91
    Points
    91
    Par défaut
    oui en effet, le code touche est différent de l'ascii.
    Par contre f11 n'a donné aucune particularité pour son bloquage

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

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Février 2006
    Messages : 2 532
    Points : 3 239
    Points
    3 239
    Par défaut
    Voici un post qui devrait t'intéresser, (et grace auquel j'ai changé d'avis , je crois qu'il y avait un autre post qui faisait doublon à celui-la, mais je n'ai pas eu le temps de chercher)... Désactiver ...

    Les points forts :
    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
     
    Non vraiment, plutôt que de perdre du temps à essayer de contrôler ce que peuvent faire les utilisateurs, il vaut mieux prendre le temps d'apprendre à bien faire son job. Tout le monde y gagnerait.
     
    L'historique est très bien comme ça. Si on a besoin d'en prendre le contrôle, c'est qu'on s'est planté.
     
    ...
    Citation:
    JauB a écrit :
    bon cr que j'ai décidé de faire est tout simplement d'enlever les doublons dans mes listes une fois la page contenat le DataGrid soit quitté. je pense que ça marchera bien mais j'ai pas encore testé. 
     
    Tu es sur la bonne voie en tout cas :)
     
    Quand tu as un problème avec les données que *tu* affiches, c'est à toi de le gérer. C'est pas à l'utilisateur d'être interdit des fonctions normales de son navigateur :)
     
    Et de toute façon, quoi que tu fasses, les utilisateurs trouveront toujours un moyen de te mettre le boxon. Donc autant ne même pas chercher à contrôler ce qu'ils peuvent faire, mais simplement blinder ton code au maximum. Comme ça ils peuvent faire ce qu'ils veulent, ils sont contents, et ton appli n'explose pas tous les deux clics, tu es content.
     
    Ça fait plus de boulot au départ, mais c'est aussi pour ça qu'on reçoit tous les mois un papier avec plein de chiffres :)

  14. #14
    Membre éclairé
    Avatar de iubito
    Homme Profil pro
    Développeur Java
    Inscrit en
    Janvier 2003
    Messages
    389
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France, Haute Loire (Auvergne)

    Informations professionnelles :
    Activité : Développeur Java

    Informations forums :
    Inscription : Janvier 2003
    Messages : 389
    Points : 655
    Points
    655
    Par défaut
    Bon on arrête les délires et on regarde ce code :

    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
    41
    /**
     * Capture les touches de fonctions pour leur associer un code javascript
     */
    var F1=112;var F2 =113;var F3 =114;var F4 =115;
    var F5=116;var F6 =117;var F7 =118;var F8 =119;
    var F9=120;var F10=121;var F11=122;var F12=123;
     
    /* Tableau des touches à capturer */
    var capturedKeys = Array();
    /* Exemple d'utilisation pour ajouter une touche */
    //capturedKeys[F4] = "alert('coucou');";
     
    /**
     * Si la touche de l'événement à un javascript associé, exécute le javascript
     */
    function captureKey(evt) {
    	var ascii=document.all?event.keyCode:evt.which;
    	if (capturedKeys[ascii] && (ascii >= F1) && (ascii <= F12)) {
    		//letter = String.fromCharCode(ascii);
    		//document.getElementById('okd').value = ascii//+' ('+letter+')';
    		if (!document.all && (ascii == F1)) {
    			window.onhelp();
    		} else {
    			eval(capturedKeys[ascii]);
    		}
    		//Evite l'action par défaut du navigateur
    		if (document.all) { //IE
    			event.keyCode = 0;
    			event.returnValue = false;
    			event.cancel = true;
    			event.cancelBubble = true;
    		}
    		else { //autres W3C
    			evt.stopPropagation();
    			evt.preventDefault();
    		}
    	}
    	//return false;
    }
    if (document.layers) { document.captureEvents(Event.KEYDOWN); }
    document.onkeydown = captureKey;
    et ça fonctionne ! au moins sur certains navigateurs.

Discussions similaires

  1. Réponses: 2
    Dernier message: 10/10/2007, 15h24
  2. [Les Codes] Problème d'appartenance des codes
    Par EvaristeGaloisBis dans le forum Droit du travail
    Réponses: 26
    Dernier message: 12/09/2007, 18h03
  3. Stratégie pour OCX, affichage code ascii ou image du code ascii désiré
    Par ProgElecT dans le forum VB 6 et antérieur
    Réponses: 9
    Dernier message: 04/08/2007, 14h00
  4. Génération de code or not génération de code ?
    Par runn2 dans le forum Rational
    Réponses: 10
    Dernier message: 24/04/2007, 19h11
  5. Lier du code C optimisé et du code ASM non optimisé
    Par garybaldi dans le forum x86 32-bits / 64-bits
    Réponses: 3
    Dernier message: 07/09/2005, 16h22

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