Remplacement de la touche F1 dans FF, chrome, c.-à-d. Est-ce que F1 est sur ie8 / chrome sur keyup et sur FF sur la touche? Qu’en est-il de dans un champ de saisie?

Je crée des événements en mode nom avec jquery. Lorsque j’utilise la fonction suivante avec le code = 112, une fonction bool = false, tout fonctionne correctement dans FF et la touche F1 est soumise à ma fonction et l’événement ne s’affiche pas pour ouvrir l’aide de Firefox dans un nouvel onglet.

function bindKeyFunc(code, func, bool){ $(document).bind('keypress.' + code, function(e){ var c = (e.keyCode ? e.keyCode : e.which); //console.log(c); if ( code == c) { //e.stopPropagation(); //e.preventDefault(); func(); return bool; } }); } 

En chrome et ie8, mon écouteur d’événement ne se déclenche pas et une aide régulière est générée, même si je ne commente pas les appels stopPropagation et preventDefault.

De même, lorsque j’essaie d’utiliser la à mes propres fins, cela fonctionne à merveille en FF mais mon événement ne se déclenche pas en chrome ou ie8 et l’action par défaut de l’onglet se déclenche à la place:

  $('input#manual-total').bind('keypress.dep', function(e) { var code = (e.keyCode ? e.keyCode : e.which); if ( code==9 ){ $('div#formset').show(); $(next).focus()[0].select(); return false; } }); 

Bonne chance. La cartographie des clés spéciales dans les navigateurs est un gâchis. En particulier, Internet Explorer ne déclenche certainement pas du tout les événements de frappe de touche . onkeydown / up peut fonctionner sur IE, cependant. De nombreuses clés ne sont pas gérées correctement, de différentes manières par différents navigateurs. Je doute fortement qu’il existe une méthode multi-navigateur pour gérer F1. Pardon; Je sais que ce n’est pas la réponse que vous vouliez, mais je crois que c’est la vérité.

Lisez l’article lié, en particulier les avertissements occasionnels sur “Quand j’ai découvert que j’avais décidé de ne pas risquer ma santé mentale en effectuant d’autres expériences sur les caractères de ponctuation.” etc. 🙂

Un simple document.addEventListener sur keydown fonctionné pour moi sur Chrome.

 var util = { }; document.addEventListener('keydown', function(e){ var key = util.key[e.which]; if( key ){ e.preventDefault(); } if( key === 'F1' ){ // do stuff } }) util.key = { 9: "tab", 13: "enter", 16: "shift", 18: "alt", 27: "esc", 33: "rePag", 34: "avPag", 35: "end", 36: "home", 37: "left", 38: "up", 39: "right", 40: "down", 112: "F1", 113: "F2", 114: "F3", 115: "F4", 116: "F5", 117: "F6", 118: "F7", 119: "F8", 120: "F9", 121: "F10", 122: "F11", 123: "F12" } 

Vous ne pouvez pas utiliser les touches F1-F12 Cross-Browser. Essayez cette démo. http://jshotkeys.googlepages.com/test-static-01.html

Utilisez keydown au lieu de keyup avec preventDefault parce que chrome utilisez avec keydown si vous avez utilisé la page d’aide keyup chome déjà déclenchée.

  if (e.key === "F1") { e.preventDefault(); //Do Code Here };