Comment capturer une touche, par exemple, Ctrl + Z, sans placer un élément d'entrée sur la page en JavaScript? Il semble que dans IE, les événements keypress et keyup ne peuvent être liés qu'à des éléments d'entrée (zones d'entrée, zones de texte, etc.)Appuyez sur la touche de capture sans placer un élément d'entrée sur la page?
Répondre
jQuery a également une excellente mise en œuvre qui est incroyablement facile à utiliser. Voici comment vous pouvez implémenter cette fonctionnalité à travers les navigateurs:
$(document).keypress(function(e){
var checkWebkitandIE=(e.which==26 ? 1 : 0);
var checkMoz=(e.which==122 && e.ctrlKey ? 1 : 0);
if (checkWebkitandIE || checkMoz) $("body").append("<p>ctrl+z detected!</p>");
});
Testés dans IE7, Firefox 3.6.3 & Chrome 4.1.249.1064
Une autre façon de faire est d'utiliser l'événement KeyDown et de suivre l'événement. code clé. Cependant, étant donné que jQuery et normalise codeTouche charCode en utilisant event.which, leur spec recommande d'utiliser event.which dans une variété de situations:
$(document).keydown(function(e){
if (e.keyCode==90 && e.ctrlKey)
$("body").append("<p>ctrl+z detected!</p>");
});
ne savait pas e.qui peut capturer la frappe ainsi que le clic de la souris! Et pourriez-vous me dire comment obtenir le code 26? – powerboy
keycode 26 est un identifiant spécifique pour "which" défini par un événement keypress (indique CTRL + z). Pour voir plus de mappages de caractères pour l'événement keypress, jetez un oeil à [les documents jQuery] (http://api.jquery.com/keypress/) ou [testeur d'événement clé d'unixpapa] (http://unixpapa.com/js /testkey.html) – Trafalmadorian
Thx. Je sais quelle est la signification de keycode. Je veux dire, 17 est pour Ctrl, 90 est pour Z, alors comment avez-vous obtenu le numéro 26? J'ai juste googlé mais je n'ai pas trouvé la réponse. – powerboy
document.onkeydown = keyDown;
document.onkeypress = keyPress;
etc.
Works pour moi dans IE
Avez-vous essayé sur IE6 et essayé les touches fléchées? – powerboy
Vous n'expliquez pas ce que sont 'keyDown' et' keyPress'. Cela va jeter une erreur. –
code & détecte ctrl + z
document.onkeyup = function(e) {
if(e.ctrlKey && e.keyCode == 90) {
// ctrl+z pressed
}
}
Pour les clés non imprimables telles que les touches fléchées et les touches de raccourci telles que Ctrl-z , Ctrl-x, Ctrl-c qui peut déclencher une action dans le navigateur (par exemple, à l'intérieur de documents ou d'éléments modifiables), vous risquez de ne pas avoir d'événement keypress dans tous les navigateurs. Pour cette raison, vous devez utiliser keydown
à la place, si vous souhaitez supprimer l'action par défaut du navigateur. Sinon, keyup
fera aussi bien.
Fixation d'un événement keydown
à document
œuvres dans tous les principaux navigateurs:
document.onkeydown = function(evt) {
evt = evt || window.event;
if (evt.ctrlKey && evt.keyCode == 90) {
alert("Ctrl-Z");
}
};
Pour une référence complète, je vous recommande fortement Jan Wolter's article on JavaScript key handling.
Detect appuyer sur la touche, y compris des combinaisons de touches:
window.addEventListener('keydown', function (e) {
if (e.ctrlKey && e.keyCode == 90) {
// Ctrl + z pressed
}
});
avantage ici est que vous êtes pas toutes les propriétés d'écraser globales, mais simplement l'introduction d'un effet secondaire. Pas bon, mais certainement beaucoup moins néfaste que d'autres suggestions ici.
Pour les JS modernes, utilisez event.key
!
document.addEventListener("keypress", function onPress(event) {
if (event.key === "z" && event.ctrlKey) {
// Do something awesome
}
});
- 1. Capture d'une touche 'supprimer' Appuyez sur
- 2. IME - Comment gérer la touche Appuyez sur
- 3. Asp.Net Search, trouvé des changements sur la touche Appuyez sur
- 4. C# Saut de boucle sur la touche Appuyez sur
- 5. Appuyez sur la touche Echap pour appeler la méthode
- 6. ASP.Net ImageButton Volant Entrée touche Appuyez sur
- 7. L'appui sur la touche Echap de la boîte de dialogue Ouvrir un fichier déclenche une touche JavaScript. Appuyez sur
- 8. Appuyez sur la touche "retour" quand un processus tué était sur la pile
- 9. est-il un moyen d'utiliser entrée ("Appuyez sur une touche pour continuer") sur la version 2.6
- 10. ASP.NET: Appeler la méthode codebehind sur Entrée Appuyez sur la touche dans le formulaire
- 11. Comment fermer une image sur une touche d'échappement, appuyez sur?
- 12. Rails: Placer du texte sur la page
- 13. GWT - Rafraîchir un élément sur la page
- 14. C# capture Ctrl + Page touche
- 15. événement Capture appuyer sur la touche à l'aide NSNotificationCenter
- 16. Exécution de la méthode Jquery lorsque vous appuyez sur la touche entrée
- 17. Utilisation de macros sans la touche d'échappement
- 18. Comment capturer une touche de suppression appuyez sur C#?
- 19. iPhone: appuyez sur un bouton par programmation
- 20. jquery sélectionner un élément dom sur la page
- 21. Appuyez sur la partie transparente de UIScrollView
- 22. touche de capture dans un WPF
- 23. Appuyez sur la touche "Gauche" dans une entrée de texte par programmation
- 24. Sélectionnez plusieurs lignes sans appuyer sur la touche de commande
- 25. Capture de la touche "Supprimer" avec jQuery
- 26. Obtention de la touche de modification enfoncée dans CGEvent appuyez sur
- 27. élément cliquable/survolable sur la page Web
- 28. Capture de la touche Windows dans C# (wpf)
- 29. .NET 3.5 GridView - Sélectionnez plusieurs lignes avec la touche Ctrl appuyez sur
- 30. En flex, appuyez sur toutes les touches avec la touche de retour
vous ne devriez pas besoin. – muhmuhten
Pourquoi pas ......? –
@Tim: Parce qu'il serait non conventionnel d'effectuer des actions lorsque ces touches sont enfoncées lorsqu'un élément de l'interface graphique n'est pas au point, violant ainsi le principe de la plus petite surprise. –