Comment empêcher les pages que je visite de remplacer les touches de raccourci Firefox sélectionnées?

40

Dans Firefox, comment puis-je empêcher les pages de remplacer les raccourcis clavier intégrés à Firefox via Javascript, clé par touche? De préférence, site par site également? Le remplacement le plus frustrant est la barre oblique ('/') qui est liée à "Rechercher dans la page". Des sites tels que les résultats de recherche Google, les calendriers Twitter, certains wikis et autres pages volent la clé de barre oblique pour leurs propres champs de recherche, ce qui est complètement faux.

Étant donné que mon représentant me permet de poser des questions, de modifier et de répondre aux questions, mais pas d'ajouter des commentaires, il s'agit en substance d'une copie de ces deux autres questions auxquelles il n'a pas été répondu correctement:

Comment arrêter un site Web pour contourner mes raccourcis clavier

Firefox: n'autorise pas les sites Web à remplacer la touche / (barre oblique)

Shel sécurisé
la source
1
Je suis frustré par le fait que PHPMyAdmin ait priorité sur ctrl- <flèche gauche> ... c'est une bonne question
Hautement irrégulier
1
Je ne supporte pas les sites Web qui surchargent le comportement par défaut. Beaucoup le font également avec des clics intermédiaires. Voir cette question connexe pour une solution à ce problème.
Cam Jackson

Réponses:

12

En m'appuyant sur la réponse d'edymtt, j'ai créé un script utilisateur qui désactive uniquement les raccourcis clavier spécifiques. Vous pouvez ajouter davantage de raccourcis à désactiver en ajoutant des codes clés au tableau de codes clés ou restreindre les sites auxquels l'appliquer en remplaçant la @includebalise par un ou plusieurs modèles.

Installez en utilisant greasemonkey .

// ==UserScript==
// @name           Disable keyboard shortcuts
// @description    Stop websites from highjacking keyboard shortcuts
//
// @run-at         document-start
// @include        *
// @grant          none
// ==/UserScript==

keycodes = [191] // Keycode for '/', add more keycodes to disable other key captures

document.addEventListener('keydown', function(e) {
//    alert(e.keyCode); //uncomment to find out the keycode for any given key
    if (keycodes.indexOf(e.keyCode) != -1)
    {
        e.cancelBubble = true;
        e.stopImmediatePropagation();
    }
    return false;
});
MikeFHay
la source
2
Impressionnant! Solution presque complète pour les clés méta aussi --- J'essayais d'empêcher Google Docs d'intercepter les onglets Précédent (Cmd + Gauche) et Suivant (Cmd + Droite) et j'ai également constaté que je devais également définir useCapture sur true; c'est-à-dire, document.addEventListener ('keydown', yourHandlerFn, true)
chbrown
1
notez que la valeur 191dépend de la disposition de votre clavier, en ce qui concerne ma configuration azerty (j'ai 16 + 58 pour la zone alpha et 111 pour le pavé numérique)
sylvainulg
2
et malheureusement, ne fonctionne plus de nos jours (testé sur phabricator et twitter). l'écouteur personnalisé est déclenché, mais l'événement du site est quand même déclenché et "recherche dans la page" ne s'affiche pas.
Sylvainulg
1
@sylvainulg Je vois que ça ne marche pas sur Twitter, mais au moins ça marche encore sur GitHub. Je me demande ce qui a changé.
binki
Cela fonctionne partout où je l'ai essayé sauf php.net. Je me demande quel événement ils utilisent.
Qwazix
8

En ce qui concerne Google et le raccourci Recherche rapide, vous pouvez installer ce script Greasemonkey:

http://userscripts-mirror.org/scripts/show/132237

Comme le dit la description, cela "empêche Google de concentrer la recherche sur chaque pression sur une touche" - en particulier, si vous appuyez /avec le focus du clavier en dehors du champ de recherche, la Recherche rapide apparaîtra, comme sur d'autres sites Web.

Je l'ai seulement installé sans toucher au code, mais je pense qu'il pourrait être facilement adapté pour fonctionner avec d'autres sites et / ou d'autres raccourcis.

Edymtt
la source
Pour clarifier: ce script utilisateur arrête TOUS les raccourcis clavier sur les pages pour lesquelles il est activé, en préservant les fonctionnalités propres du navigateur. Pour l'appliquer à d'autres sites Web, ajoutez simplement des balises @include.
MikeFHay
sans aucune information sur ce qui se cache derrière le lien, la réponse est malheureusement inutile lorsque usercripts-mirror.org tombe en panne, bloqué par un pare-feu ou autre.
Sylvainulg
8

Depuis Firefox 58, il est possible de désactiver le remplacement des raccourcis clavier par site Web.

"Ignorer les raccourcis clavier" et de nombreuses autres autorisations sont disponibles dans "Informations de page -> Autorisations" (sous l'icône d'informations dans la barre d'adresse).

Exemple d'autorisations Firefox pour superuser.com

Le remplacement du clavier a été introduit dans Firefox # 380637

Alec Istomin
la source
1
Oui, après 11 ans, ils ont finalement réussi à réparer ce ticket. Malheureusement, l’implémentation actuelle (toujours dans FF 59) désactive complètement les touches Backspaceet Delete, ce qui est vraiment nul.
Lambart
6
En outre, malheureusement , il ne l' empêche pas de pages Web à partir de la capture non décalée (c. -à- pas Ctrl, Shiftou Altentrée de clé) - ce qui signifie que cela ne l' aide du tout avec la touche barre oblique mentionnée dans la question initiale.
Lambart
@Lambart - bon à savoir, j'ai fini par ne pas utiliser cela aussi, car les raccourcis clavier de Firefox étaient corrigés dans jira et confluence (quelque part autour de firefox 59)
Alec Istomin
2
qu'est-ce qui était corrigé? JIRA et Confluence saisissent toujours toutes sortes de clés qui perturbent constamment mon flux de travail. Je considère cela comme le problème d'Atlassian: ils doivent permettre aux gens de désactiver (et / ou de changer) leurs "raccourcis".
Lambart
firefox bugzilla.mozilla.org/show_bug.cgi?id=1433592 a corrigé les produits atlassian pour moi (il pourrait y avoir eu des correctifs atlassian dans le même laps de temps)
Alec Istomin
0

Voici un script plus général - vous pouvez définir un nombre illimité d'événements à désactiver.

https://greasyfork.org/fr/scripts/5819-disable-website-keyboard-hooks

// ==UserScript==
// @name           Disable website keyboard hooks
// @description    Stop websites from hijacking keyboard shortcuts.
// @author         Isaac Levy
// @run-at         document-start
// @include        *
// @grant          none
// @version        0.0.1
// @namespace      https://isaacrlevy.com
// ==/UserScript==

var keycodes = [ // Add keycodes as desired, keep sorted.
    37, 38, 39, 40 // Arrow keys.
]

var meta_keycodes = [ // Disable these when meta key is pressed.
    70
];

// Don't change below this line.

var isMac = navigator.platform.toLowerCase().indexOf('mac') >= 0;

// Create a fast lookup.
// This saves work during normal typing. Maybe unnecessary.
var keycode_offset = keycodes[0];
var keycode_arr = Array(keycodes[keycodes.length - 1] - keycode_offset)
for (var i = 0, len = keycodes.length; i < len; i++) {
    keycode_arr[keycodes[i] - keycode_offset] = true;
}

document.addEventListener('keydown', function(e) {
    //console.log(e);
    if ((isMac && e.metaKey) || (!isMac && e.ctrlKey)) {
        if (meta_keycodes.indexOf(e.keyCode) >= 0) {
            e.stopImmediatePropagation();
        }
    } else if (keycode_arr[e.keyCode - keycode_offset]) {
        e.stopImmediatePropagation();
    }
    return false;
});
vackamole
la source
Je suis désolé - mais je n'arrive pas à faire fonctionner ça. Surtout je veux désactiver les flèches gauche et droite d'un site - mais avec ce script les flèches contrôlent toujours le site ???
Christian Herenz
-3

YesScript add-on était la solution sans tracas pour moi. Cela empêche les sites d'utiliser JavaScript, mais uniquement les sites que vous choisissez. La plupart du temps, ces sites piratent le raccourci clavier par JavaScript. J'ai trouvé à ce sujet sur cet article forme Ghacks.net.

Phoenix Brothers
la source