Est-il un moyen de capture/remplacer Ctrl-R ou F5 sur IE à l'aide de Javascript?
Je veux capturer l' Ctrl-R ou F5 raccourci sur le navigateur pour empêcher d'effectuer un actualiser de votre navigateur, mais au lieu d'effectuer un rafraîchissement personnalisé.
J'ai été en mesure de capturer Ctrl-R sur Safari et FF à l'aide de:
document.onkeypress = function(e){
if ((e.ctrlKey || e.metaKey) && e.keyCode == 114) //Ctrl-R
e.preventDefault();
}
Mais qui ne fonctionne pas sur IE. Est-il possible de faire cela sur IE?
Mise à jour: Pour ceux qui se demandent pourquoi je fais cela, en premier lieu: je voulais juste faire une application personnalisée d'actualisation, mais je voulais éviter d'avoir un bouton "actualiser" parce que j'ai un peu décourager les à l'aide de l'actualisation (Nous avons une pleine page flex app). Nous avons fini par commutation à F8 parce que F5 est tout simplement trop difficile à travailler sur tous les navigateurs.
Est-il une bonne raison de vouloir faire cela? Pour ma part, je serais probablement obtenir assez ennuyé par un site qui remplace de base de la fonctionnalité de navigateur comme ça.
Il y a de très bonnes raisons pour cela. Considérons un ordinateur de bureau à base de feuilles de temps système de saisie de données, où des centaines d'utilisateurs ont été formés à l'utilisation de certaines touches de raccourci. Vous voulez migrer l'application vers une application basée sur le web ayant comme-pour des contraintes de l'application de bureau. Pour de bonnes ou de mauvaises, si c'est de la gestion de la décision finale, puis de trouver un moyen de remplacer le comportement par défaut des touches de fonction est obligatoire. Il existe de nombreux autres scénarios où vous voulez remplacer le clavier par défaut comportements, la plupart d'entre eux j'imagine être pour les applications web internes.
Pour ajouter à la Dale de la liste, il y a beaucoup de portables dans les entrepôts (Pocket IE) qui ne peuvent pas avoir des écrans tactiles et de la nécessité de faire usage des touches de fonction.
OriginalL'auteur airportyh | 2009-09-09
Vous devez vous connecter pour publier un commentaire.
Ouvrir JavaScript
http://www.openjs.com/scripts/events/keyboard_shortcuts/
Pour certaines touches (F1, F4), vous devez ouvrir une nouvelle fenêtre du navigateur, sans la barre d'adresse.
Exemple
Ouvrir une nouvelle fenêtre, sans ornements:
JavaScript pour utiliser la bibliothèque:
À l'intérieur de
webpage.html
:Mieux:
var FALSE_FUNCTION = function() { return false; };
.super réponse, il m'a sauvé beaucoup de temps. +1
OriginalL'auteur Dave Jarvis
Il n'y a pas de manière solide pour remplacer la fonction des touches dans les navigateurs.
Internet Explorer a certaines touches qui ne peuvent pas être remplacés, et certaines touches qui, même lorsque remplacé - encore exécute comportement par défaut--comme la touche F11, qui passe en mode plein écran, et la touche F1 qui ouvre une fenêtre.
Chrome ne vous autorise pas à utiliser des manifestations à tous.
FireFox est le plus favorable, mais encore peu précises-comme Internet Explorer; il y a encore quelques touches et du comportement par défaut, vous ne pouvez pas ignorer.
Et enfin.. Opéra.. Qui est à peu près aussi difficile que Internet Explorer.
Et le comportement par défaut est différent d'une version à l'autre. C'est comme marcher dans une mine de champ.. les yeux Bandés.. 🙂
Essayer de remplacer CTRL+R /F5 sent la mauvaise conception.
Quel problème essayez-vous de résoudre?
Jarvis: Êtes-vous sûr que cela fonctionne dans Internet Explorer 8? Je n'ai pas eu la chance de faire cela.
Sur IE8, j'ai dû faire une ligne de corrigé: ajouter "var code;" après la ligne: "var func = function(e) {". IE8 est semble être plus stricte avec js.
dans shortcuts.js, qui est.
Jarvis: compte tenu du fait que cela ne peut être fait dans tous les navigateurs A-grade, c'est une mauvaise conception. Je suis d'accord avec l'idée, bien que.
OriginalL'auteur cllpse
Depuis le "comment" a déjà été couvert, j'ai pensé que je le mentionne, que vous devez être conscient des limites de l'utilisation de Javascript pour quelque chose comme ça.
Par exemple, dans Safari (et probablement d'autres), si vous pouvez l'obtenir pour le navigateur de Recherche champ de saisie, vous pouvez toujours émettre des touches de raccourci de commandes, mais il est hors de la portée de votre Javascript. Si l'utilisateur ne dispose que, tout événement-clé-manger de code que vous avez écrit ne sera pas invoquée, et la pression de touche va passer par l'amende juste.
Donc les solutions que vous trouvez peut fonctionner, mais presque universellement être incontournable d'une certaine façon par juste en utilisant les fonctions de votre navigateur.
OriginalL'auteur Luke Rinard
YUI a un gestionnaire de touches qui fonctionnent sur tous les navigateurs
http://developer.yahoo.com/yui/examples/container/keylistener.html
Je pense que le problème avec le code ci-dessus est que IE ne passe pas le cas pour la fonction. Elle le met dans une variable globale appelée fenêtre.de l'événement.
Je vous propose d'essayer le YUI clé à l'écoute, il sera assez propre solution et vous n'avez pas besoin d'utiliser l'ensemble de la bibliothèque, juste les pièces dont vous avez besoin.
OriginalL'auteur Zoidberg
Je beleave
document.body.onbeforeunload
est le chemin. Vous pouvez même empêcher l'utilisateur de quitter la page. Tout simplement pas sûr de savoir comment détecter si ses un rafraîchissement ou si il fait du surf à un autre endroit du document.l'emplacement peut-être?)OriginalL'auteur Havenard
pour f11 sur IE
ajouter checkkey sur onkeydown événement pour le corps
(onkeydown='return checkKey(event)' )
OriginalL'auteur max
Avez-vous essayé
keyCode == 82
, pas114
? Codes de clé ne sont pas de l'ASCII/charCodes, donc il n'y a pas de majuscules/minuscules considération.Cela a fonctionné pour moi (enfin, techniquement, je l'ai utilisé avec un JQuery keydown gestionnaire, pas
document.onkeypress
):Et pour tous ceux pleurer "mauvais design" - je suis en train de construire un émulateur de terminal et souhaitez CTRL-R pour correspondre à la Bash CTRL-R pour la recherche de l'histoire, de ne pas actualiser la page. Il y a toujours des cas d'utilisation.
OriginalL'auteur Jeff Ward
J'ai réussi à résoudre un problème similaire à ce juste à l'aide de JavaScript de base seulement. Le code est divisé en deux parties, la définition et la mise en œuvre, mais les pièces peuvent être fusionnées si c'est nécessaire.
Définition
Mise en œuvre
Il suffit d'ajouter le code que vous souhaitez intercepter et de modifier la fonction de rappel en conséquence
OriginalL'auteur Wheelchair Geek