dnavra: Ausschalten der kompletten Tastaturnavigation des Browsers

Beitrag lesen

Hallo dnavra,

Hallo Christian,
danke für die schnelle Antwort.

  • Ist das komplette Ausschalten der Tastaturnavigation überhaupt möglich?

Ich würde spontan sagen, nein. Im IE bekommst Du es vielleicht über ein paar Tricks hin, aber in anderen Browsern definitiv nicht.

  • Wenn nicht, kann man zumindest die Navigation über Backspace-Taste unterdrücken, ohne dass die "normale" Texteingabe davon berührt ist?

Du könntest über Eventhandling den Tastendruck abfangen; (siehe zu Eventhandling SELFHTML) ich bin mir nicht ganz sicher, aber ein "return false;" dürfte im Eventhandler die weitere Verarbeitung unterbinden. (wenn es das nicht tut, hast Du Pech gehabt, dann gehts gar nicht)

»»

Ich habe es jetzt mit "window.captureEvents" und ein "return false" im Falle von Backspace-Taste probiert:

<SCRIPT LANGUAGE = "JavaScript">
function avoidKeyNavigation(event) {
if (event.which == 8)
return false;
}
document.captureEvents(Event.KEYPRESS);
document.onkeypress = avoidKeyNavigation;
</SCRIPT>

Funktioniert unter Netscape sehr gut. Ich kann mir vorstellen, dass ich das auch mit den anderen Tasten hinbekommen.
"window.captureEvents" läuft aber leider nicht unter IE und eigentlich dort brauche ich diese Funktionalität. Gibt es dort etwas vergleichbares?

Wozu brauchst Du denn das? Vielleicht gibt es ja eine bessere Möglichkeit.

Das hat mit dem Workflow der Applikation zu tun. Auf der vorherigen Seite gibt es eine Operation, die zu der aktuellen Seite geführt hat. Diiese darf aber nur einmal ausgeführt werden. Wenn der Benutzer eine Seite zurückgeht und die Operation wiederholt, bekommt er zwar eine Fehlermeldung bzw. eine Ausnahme, so dass keine Inkonsistenzen in den Daten entstehen können. Für eine echte Applikation gehört es aber meiner Meinung nach dazu, dass man eine solche Navigation überhaupt nicht erlaubt.
Als eine andere alternative Lösung wäre wünschenswert, dass immer wenn der Benutzer über die Browsernavigation eine Seite zurückgeht, dass man dann automatisch in der Historie wieder eine Seite nach vorne blättert. Das setzt aber wieder voraus, dass man mitbekommt, dass der Benutzer eine Seite zurückgeblättert hat. Man müsste aber dann auf der vorherigen Seite das mitkriegen und darauf automatisch reagieren. Keine Ahnung ob so etwas überhaupt geht, ohne irgendwelche drüberliegende Framesets zu benutzen.

Viele Grüße,
Christian