Come proibire la scorciatoia da tastiera rubata da siti web in Firefox

Molti siti web, soprattutto tutto ciò che coinvolge la modifica di text ricco (questo sito è anche colpevole), ruba scorciatoie da tastiera normalmente utilizzate per controllare Firefox e farli fare qualcosa di diverso. È totalmente infuriato quando premendo qualcosa come il numero Cmd, Cmd-L, Cmd-T o Cmd-K e non faccio quello che voglio. Posso farlo smettere?

In realtà, sarebbe probabilmente per il meglio se potessi proibire la rubazione di tutti i collegamenti Cmd-*. Non li ho mai visti usati per niente utile. È ansible?

Grazie alla nuova properties; @run-at di Greasemonkey, questo è ora ansible!

Ho preso l'ispirazione da questo script e questo script per unirli in un Usercript che intercetta con successo le scorciatoie da tastiera Ctrl + T e Ctrl + S. Ho provato in Firefox 17 ESR e Firefox 25.

 // ==UserScript== // @name Disable Ctrl+s and Ctrl+t interceptions // @description Stop websites from highjacking keyboard shortcuts // // @run-at document-start // @include * // @grant none // ==/UserScript== // Keycode for 's' and 't'. Add more to disable other ctrl+X interceptions keycodes = [83, 84]; (window.opera ? document.body : document).addEventListener('keydown', function(e) { // alert(e.keyCode ); //uncomment to find more keyCodes if (keycodes.indexOf(e.keyCode) != -1 && e.ctrlKey) { e.cancelBubble = true; e.stopImmediatePropagation(); // alert("Gotcha!"); //ucomment to check if it's seeing the combo } return false; }, !window.opera); 

Poiché i problemi sembrano essere events di tastiera JavaScript che rubano le chiavi, non sarebbe ansible creare uno script JavaScript (da utilizzare tramite Greasemonkey) che distriggers questi tutti gli events della tastiera, restituendo così il corretto uso di ciascun collegamento al browser?

Non so come sia ansible, ma qualcuno con più esperienze di JavaScript / Greasemonkey potrebbe essere in grado di aiutare (forse vale la pena chiedere su SO).

Il problema è che qualsiasi pagina può eseguire Javascript che imposta un gestore di events per sfruttare gli events di printing e i controlli di javascript di Firefox non sono sufficientemente graziosi per fermarlo senza rompere altre funzionalità di javascript.

L'unico modo per impedire questo è quello di disabilitare Javascript (Strumenti -> Opzioni, [Contenuto] tab, deselect Enable JavaScript ). Oppure puoi distriggersre Javascript su base per sito con un'estensione come NoScript.

Firefox ti consente di evitare alcuni usi di Javascript, come spostare / ridimensionare le windows, modificare o distriggersre il menu di context, ecc; ma non c'è niente da impedire che i siti web intercettino gli events della tastiera.

Forse c'è un'estensione che dà questo livello di controllo – non lo so.
Ci sono opzioni Javascript , ma l'estensione non viene più aggiornata.

Ricerche approfondite mostrano che, a partire dalla versione attuale di Firefox (3.6.x), questo è imansible: tutti i conflitti di conflitto chiave vengono risolti con priorità: Sistema> Sito Web> Firefox – un ordine piuttosto stupido che sia. Nessuno degli addons che ho provato sembra essere in grado di risolvere il problema.

Probabilmente potrebbe diventare disponibile nelle versioni future, ma in questo momento la risposta è – Imansible.

È probabile che i plugin di terze parti stanno prendendo il fuoco dalla window principale del browser. In questo caso l'ingresso della tastiera (eccetto gli interrupt) verrà intercettato dal plugin. Se non ti piace questo, puoi sempre rimuovere i plugin offensivi [suppongo che sia probabilmente flash].

Dopo molte prove su diversi browser, è più facile intercettare le chiavi quando sono in discesa (non pressate) perché alcune di queste "chiavi integrate dell'applicazione" sono difficili da intercettare con l'evento "keypress".

Ho trovato questo script che è un tipo di browser cross browser compatibile (non ho testato per IE di Microsoft). Notare che i browser restituiscono codici diversi per alcuni tasti. Nel mio caso volevo impedire Ctrl + P.

La chiave "P" sul cromo è vista come e.keyCode == 80 , sull'opera, è e.charCode == 16 , mentre su firefox è e.charCode == 112

 $(document).on('keydown', function(e) { if(e.ctrlKey && (e.key == "p" || e.charCode == 16 || e.charCode == 112 || e.keyCode == 80) ){ alert("Please use the Print PDF button below for a better rendering on the document"); e.cancelBubble = true; e.preventDefault(); e.stopImmediatePropagation(); } }); 

Ho usato jQuery.

Forse è ansible utilizzare Autohotkey o Autoit, uno di quei programmi e se è ansible fare combinazioni di hotkey e collegarle alle funzioni firefox, ad esempio

Ctrl-; T Ctrl-; T alla nuova scheda

Ctrl-; N Ctrl-; N in una nuova window e così via.

Non so come utilizzare Autohotkey o Autoit, quindi qualcun altro dovrà verificare che questo possa funzionare, lo offro solo come un'idea potenziale.

La versione corrente di Firefox ci permette di "distriggersre JavaScript per distriggersre il menu di context":

Strumenti / Opzioni / Contenuto / Abilita Javascript Advanced / Distriggers o sostituisce i menu di context

Ma non esiste alcuna caratteristica per "distriggersre javascript per scartare i tasti di scelta rapida".

ps. Odio il sito web twitter, le sue scorciatoie da tastiera sono in conflitto con i miei collegamenti a tastiera basati sul sistema: J, K, L, I

Ho fatto una richiesta di funzionalità su bugzilla.mozilla.org, per favore commenta qui: https://bugzilla.mozilla.org/show_bug.cgi?id=775002