54 votes

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

Dans Firefox, comment puis-je empêcher les pages de remplacer les raccourcis clavier intégrés à Firefox par le biais de Javascript sur une base par touche ? De préférence, par site également ? Le raccourci le plus frustrant est la barre oblique ('/') liée à la fonction "Rechercher dans la page". Des sites comme les résultats de recherche de Google, les lignes de temps de Twitter, certains wikis et d'autres pages volent la barre oblique pour leurs propres boîtes de recherche, ce qui est tout à fait incorrect.

Comme mon représentant me permet de poser des questions, de les modifier et d'y répondre, mais pas d'ajouter des commentaires, il s'agit en fait d'un doublon de ces deux autres questions auxquelles il n'a pas été répondu correctement :

Comment empêcher un site web d'outrepasser mes raccourcis clavier ?

Firefox : ne pas permettre aux sites web d'ignorer la touche / (barre oblique)

19voto

MikeFHay Points 2544

En m'appuyant sur la réponse d'edymtt, j'ai créé un script utilisateur qui désactive uniquement des raccourcis clavier spécifiques. Vous pouvez ajouter d'autres raccourcis à désactiver en ajoutant codes clés au tableau des codes clés, ou restreindre les sites auxquels il s'applique en remplaçant le mot-clé @include avec un ou plusieurs motifs.

Installer en utilisant greasemonkey .

// ==UserScript==
// @name           Disable keyboard shortcuts
// @description    Stop websites from hijacking 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;
});

19voto

Alec Istomin Points 579

Depuis Firefox 58, il est possible de désactiver les raccourcis clavier par site web.

L'option "Remplacer les raccourcis clavier" et de nombreuses autres autorisations sont disponibles dans "Page Info -> Permissions" (sous l'icône d'information dans la barre d'URL).

Firefox Permissions example for superuser.com

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

8voto

edymtt Points 551

En ce qui concerne Google et le raccourci Quick Find, vous pouvez installer ce script Greasemonkey script :

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

Comme l'indique la description, il "empêche Google de concentrer la recherche sur chaque touche pressée" -- en particulier, si vous appuyez sur / avec le focus du clavier en dehors de la boîte 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.

0voto

vackamole Points 1

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

https://greasyfork.org/en/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;
});

SistemesEz.com

SystemesEZ est une communauté de sysadmins où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X