Wie verhindere ich, dass von mir besuchte Seiten ausgewählte Firefox-Tastenkombinationen überschreiben?


40

Wie kann ich in Firefox verhindern, dass Seiten die in Firefox integrierten Tastenkombinationen für einzelne Tasten durch Javascript überschreiben? Am liebsten auch auf Site-Basis? Die frustrierendste Überschreibung ist der Schrägstrich ('/'), der mit "In Seite suchen" verknüpft ist. Websites wie Google-Suchergebnisse, Twitter-Timelines, einige Wikis und andere Seiten stehlen den Schrägstrich für ihre eigenen Suchfelder, was völlig falsch ist.

Da ich durch meinen Mitarbeiter Fragen stellen, bearbeiten und beantworten, aber keine Kommentare hinzufügen kann, ist dies im Grunde ein Duplikat dieser beiden anderen Fragen, die nicht richtig beantwortet wurden:

Wie kann ich eine Website stoppen, um meine Tastaturkürzel zu überschreiben?

Firefox: Websites dürfen den / (Schrägstrich) nicht überschreiben


1
Ich bin frustriert darüber, dass PHPMyAdmin Strg- <linker Pfeil> überschreibt ... es ist eine gute Frage
Sehr unregelmäßig

1
Ich kann keine Websites ausstehen, die das Standardverhalten überschreiben. Viele machen das auch mit mittleren Klicks. In dieser verwandten Frage finden Sie eine Lösung für dieses Problem.
Cam Jackson

Antworten:


12

Aufbauend auf der Antwort von edymtt habe ich ein Benutzer-Skript erstellt, das nur bestimmte Tastaturkürzel deaktiviert. Sie können weitere zu deaktivierende Verknüpfungen hinzufügen, indem Sie dem Keycodes-Array Keycodes hinzufügen oder einschränken, auf welche Sites sie angewendet werden sollen, indem Sie das @includeTag durch ein oder mehrere Muster ersetzen .

Installieren Sie mit 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;
});

2
Genial! Beinahe vollständige Lösung auch für Metaschlüssel --- Ich habe versucht, Google Text & Tabellen daran zu hindern, die vorherigen Tabs (Cmd + Links) und die nächsten Tabs (Cmd + Rechts) abzufangen. Außerdem musste useCapture auf true gesetzt werden. dh document.addEventListener ('keydown', yourHandlerFn, true)
chbrown

1
Beachten Sie, dass der Wert 191von Ihrem Tastaturlayout abhängt, was mein Azerty-Setup betrifft (ich habe 16 + 58 für den Alpha-Bereich und 111 für den Nummernblock)
Sylvainulg

2
und funktioniert heutzutage leider nicht mehr (getestet auf phabricator und twitter). Der benutzerdefinierte Listener wird ausgelöst, das Ereignis der Site wird jedoch trotzdem ausgelöst und die Option "In Seite suchen" wird nicht angezeigt.
Sylvainulg

1
@sylvainulg Ich sehe, dass es auf Twitter nicht funktioniert, aber zumindest auf GitHub. Ich frage mich, was sich geändert hat.
binki

Das funktioniert überall, wo ich es ausprobiert habe, außer bei php.net. Ich frage mich, welches Ereignis sie verwenden.
Qwazix

8

In Bezug auf Google und die Verknüpfung "Schnellsuche" können Sie das folgende Greasemonkey-Skript installieren:

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

Wie die Beschreibung besagt, wird "Google daran gehindert, die Sucheingabe bei jedem Tastendruck zu fokussieren" - insbesondere, wenn Sie /mit dem Tastaturfokus außerhalb des Suchfelds drücken, wird die Schnellsuche wie auf anderen Websites angezeigt.

Ich habe es nur installiert, ohne den Code zu berühren, aber ich denke, es könnte leicht angepasst werden, um mit anderen Sites und / oder anderen Verknüpfungen zu arbeiten.


Zur Verdeutlichung: Dieses Userscript stoppt ALLE Tastaturkürzel auf Seiten, für die es aktiviert ist, und behält dabei die Funktionalität des Browsers bei. Um es auf andere Websites anzuwenden, fügen Sie einfach weitere @ include-Tags hinzu.
MikeFHay

Ohne Informationen darüber, was sich hinter dem Link verbirgt, ist die Antwort leider nutzlos, wenn userscripts-mirror.org herunterfährt, von einer Firewall blockiert wird oder was auch immer.
Sylvainulg

8

Seit Firefox 58 ist es möglich, das Überschreiben von Tastaturkürzeln pro Website zu deaktivieren.

"Tastaturkürzel überschreiben" und viele andere Berechtigungen finden Sie unter "Seiteninfo -> Berechtigungen" (unter dem Info-Symbol in der URL-Leiste).

Firefox-Berechtigungsbeispiel für superuser.com

Tastaturüberschreibung wurde in Firefox # 380637 eingeführt


1
Ja, nach elf Jahren haben sie es endlich geschafft, dieses Ticket zu reparieren. Leider deaktiviert die aktuelle Implementierung (immer noch in FF 59) die Tasten Backspaceund vollständig Delete, was wirklich scheiße ist.
Lambart

6
Auch leider ist es nicht Web - Seiten von der Erfassung nicht verschoben (dh nicht verhindern Ctrl, Shiftoder AltSchlüssel) Eingang - was bedeutet dies nicht hilft überhaupt mit der Schrägstrich - Taste in der ursprünglichen Frage erwähnt.
Lambart

@ Lambart - gut zu wissen, ich habe dies letztendlich auch nicht verwendet, da Firefox-Tastaturkürzel in Jira und Confluence (irgendwo in der Nähe von Firefox 59) behoben wurden
Alec Istomin

2
was wurde behoben JIRA und Confluence greifen nach wie vor nach allen Arten von Schlüsseln, die meinen Arbeitsablauf ständig stören. Ich sehe dies als Atlassians Problem: Sie müssen den Leuten erlauben, ihre "Verknüpfungen" zu deaktivieren (und / oder zu ändern).
Lambart

Firefox bugzilla.mozilla.org/show_bug.cgi?id=1433592 atlassian-Produkte für mich behoben (es gab möglicherweise atlassian-Korrekturen im gleichen Zeitraum)
Alec Istomin

0

Hier ist ein allgemeineres Skript - Sie können eine beliebige Anzahl von Tastendruckereignissen definieren, die deaktiviert werden sollen.

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;
});

Es tut mir leid - aber ich kann das nicht zum Laufen bringen. Insbesondere möchte ich die Pfeiltasten links und rechts auf einer Site deaktivieren - aber mit diesem Skript steuern die Pfeiltasten immer noch die Site ???
Christian Herenz

-3

Das YesScript- Add-On war für mich die problemlose Lösung. Es verhindert, dass auf Websites JavaScript ausgeführt wird, sondern nur die von Ihnen ausgewählten Websites. Meistens hijacken diese Websites die Tastenkombination von JavaScript. Ich habe darüber auf diesem Artikel von Ghacks.net gefunden.

Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.