5

Ich schrieb ein user script, die auf ausgewählten Text in einem Textfeld eine bestimmte Operation durchführt, wenn Drücken CTRL +SHIFT + B.Chrome Tastaturkürzel in einem Benutzerskript

Dies geschieht durch Registrierung eines keypress Ereignisses für den Textbereich und anschließender Prüfung der gedrückten Taste. Um zu verhindern, dass der Browser die Tastenkombination behandelt, verwende ich die preventDefault() Methode, die in Firefox funktioniert (das Bibliothek Fenster ist nicht geöffnet, aber mein Code wird stattdessen ausgeführt).

In Chrome öffnet diese Tastenkombination jedoch die Lesezeichenleiste und das Ereignis keypress wird nicht einmal ausgelöst.

Ich frage mich, ob es eine Möglichkeit gibt, eine solche Verknüpfung in Chrome zu erstellen. Es muss mit einem Userscript funktionieren - eine echte Erweiterung ist keine Option, da ich lieber nicht zwei verschiedene "Versionen" für Firefox und Chrome beibehalten möchte.

Antwort

5

Offenbar ist die Chrome UI auslöst von keydown statt keypress (This Quirksmode article könnte darauf hindeuten, warum - keypress ist soll ausgelöst, wenn ein tatsächlicher Charakter wird eingeführt wird).

Ändern So die entsprechende Zeile an:

$(document).on('keydown', '.wmd-input', function(e) { 

scheint sowohl FF und Chrome zu arbeiten.

+0

Wird dies die ursprüngliche Tastenkombination überschreiben/deaktivieren oder werden beide ausgelöst? – Patrick

+0

@Patrick, hängt ab. Nachschlagen 'preventDefault()', 'stopPropagation()', 'stopImmediatePropagation()' usw. –

Verwandte Themen