Hotkeys für den Browser abfangen
Thomas Schmieder
- javascript
Hallo,
wir schreiben immer noch an unserer Lösung für Arme, einfacher Richtext-Editor in Javascript. Es funktioniert schon fast alles so, wie wir uns das vorstellen.
Allerdings gibt es ein Problem mit den Hotkeys für den Browser.
Wir möchten die Backspace-Taste natürlich zum Rückwärtslöschen nutzen, so wie das seit ca. 22 Jahren bei PC-Programmen üblich ist...
Leider wird die Taste dann aus der Funktion onKeyDown="steuertaste()" an den Browser weitergegeben, der dann, falls vorhanden, im aktiven Fenster in seiner History einen zurückblättert.
Ein return false bei in steurtaste() bewirkt leider gar nichts. Das Überschreiben der Eigenschaft window.event.keyCode=0 führt dazu, dass der Code nun plötzlich in onkeyPress="asciitaste()" auftaucht. Bei Backspace macht das kein Problem, da es sich beide male um #8 handelt und #8 als darstellbares Zeichn nicht gebraucht wird.
Bei anderen Tasten ist das allerdings ein Problem.
Dann gibts da noch die Leertaste, die zwischen den Elementen in einer Webseite weiterschaltet.
Gibts nicht ne ganz offizielle Möglichkeit, diese Funktionen aus JavaScript heraus auszuschalten?
Sonst müssten wir wieder eine Krücke bauen und alle Eingaben über ein input-Feld führen und dann erst in unseren Eingabepuffer überführen. Nur wie bekomm ich das dann wieder "unsichtbar" und trotzdem aktiv? --> CSS???
Liebe Grüße aus http://www.braunschweig.de
Tom
Hi Tom,
wir schreiben immer noch an unserer Lösung für Arme, einfacher Richtext-Editor in Javascript. Es funktioniert schon fast alles so, wie wir uns das vorstellen.
Allerdings gibt es ein Problem mit den Hotkeys für den Browser.
Wir möchten die Backspace-Taste natürlich zum Rückwärtslöschen nutzen, so wie das seit ca. 22 Jahren bei PC-Programmen üblich ist...
Leider wird die Taste dann aus der Funktion onKeyDown="steuertaste()" an den Browser weitergegeben, der dann, falls vorhanden, im aktiven Fenster in seiner History einen zurückblättert.
Hab das grade probiert. Mozilla macht Backspaces in einem textarea... - wenn allerdings die textarea _nicht_ den focus hat, dann kannste nichts machen, aber sonst verstehe ich das problem nicht...
Fabian
Hi Fabi,
wir arbeiten nicht mit einer Textarea, weil die so schlecht die Formatierung darstellen kann. Die ganze Anzeige findet in einem DIV statt.
Ein Div kann zwar scheinbar den Focus erhalten, obwohl es ja kein Dialogobjekt ist, aber leider fängt es das Backspace und Space usw nicht ein (so wie die Textarea).
Welche Browser-Steuertasten gibt es denn sonst noch, die man eigentlich für die Editorfunktionen brauchen würde?
Liebe Grüße aus http://www.braunschweig.de
Tom
Hi Tom,
wir arbeiten nicht mit einer Textarea, weil die so schlecht die Formatierung darstellen kann. Die ganze Anzeige findet in einem DIV statt.
Ja, das sagtest du, entschuldige.
Ein Div kann zwar scheinbar den Focus erhalten, obwohl es ja kein Dialogobjekt ist, aber leider fängt es das Backspace und Space usw nicht ein (so wie die Textarea).
Logisch. Man könnte für diese "Steuertasten" Ersatz-Funktionen schreiben, und über Buttons ansteuern. Die Funktion backspace(); würde halt das letzte Zeichen vor dem Fokus löschen. Das Problem ist, dass das das Problem nicht löst, dass der Backspace im IE eine Seite zurück geht...
Welche Browser-Steuertasten gibt es denn sonst noch, die man eigentlich für die Editorfunktionen brauchen würde?
- Backspace
- Space
- Funktionstasten
...
Kurz gesagt den gesamten Num-Block, und der wiederum ist (bei mir) mit manch anderen Funktionen versehen...
Und da fällt mir ein weiteres Problem ein (Da ich gerade unter Debian poste...): Wie gehen wir mit (u.U.) unterschiedlichen Tastaturen um? Es kann ja sein, dass jemand eine andere Keymap verwendet, und dann zeigt der "Arbeitsbereich" (also das Div) doch u.U. Unsinn an, oder?
Und: Hab ihr schon Workarounds für die Zeilenumbrüche?
Fabian
Hallo, Fabian,
Kurz gesagt den gesamten Num-Block, und der wiederum ist (bei mir) mit manch anderen Funktionen versehen...
Und da fällt mir ein weiteres Problem ein (Da ich gerade unter Debian poste...): Wie gehen wir mit (u.U.) unterschiedlichen Tastaturen um? Es kann ja sein, dass jemand eine andere Keymap verwendet, und dann zeigt der "Arbeitsbereich" (also das Div) doch u.U. Unsinn an, oder?
Und: Hab ihr schon Workarounds für die Zeilenumbrüche?
Die "normalen" Editorfunktionen
funktionieren alle schon
Das Div scrollt auch ganz wunderbar, wenn es mehr Text wird, als reinpasst.
Nun muss noch
eingebaut werden.
Was könnte man denn an elementaren Funktionen sonst noch brauchen? Es geht ja "nur" um Textbearbeitung.
Nur ärgerlich, dass so die Maus nicht nutzbar ist für die Cursorpositionierung. Und auch die Geschichte mit Markierung und dann dafür das Format setzen wäre toll.
Dann müssen wir die anderen Browser noch einpflegen. Die elementaren Funktionen, die wir gebaut haben, funktionieren aber auf ner ganzen Reihe. Nur das andere eventCaching macht mir noch etwas Arbeit, da ja in Netscape die onXxxxxYyyy-Funktionen trotzdem irgendwelche Eirkung haben.
Liebe Grüße aus http://www.braunschweig.de
Tom