Browser-Tasten mit JavaScript deaktivieren?
lima-city → Forum → Die eigene Homepage → HTML, CSS & Javascript
benutzer
browser
code
dank
fokus
funktion
http
keyboard
problem
richtig verwenden
server
shell
tab
taste
tasten
text
textfeld
url
verlaufen
weben
-
Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!
lima-city: Gratis werbefreier Webspace für deine eigene Homepage
-
hackyourlife schrieb:
Ich bastle hier spaßhalber an einer Fake-Shell. Das Problem dabei ist nur, dass Tasten wie z.B. die Rücktaste im Browser mit einer Funktion hinterlegt sind. Daher lässt sie sich nicht richtig verwenden (Rücktaste => Verlauf zurückgehen). Wie bekomme ich das trotzdem hin?
Danke im Vorraus
Ich kann das Problem nicht nachvollziehen, da bei mir bei der Rücktaste einfach der Text gelöscht wird?!
Hast du das Problem also gelöst? Wenn ja sag uns doch wie, würde mich auch interessieren? -
alfr3d schrieb:
Das funktioniert aber nur dann, wen du z.B. den Link in einem neuen Tab öffnest.
Ich kann das Problem nicht nachvollziehen, da bei mir bei der Rücktaste einfach der Text gelöscht wird?!
Wenn du hingegen auf den Link klickst wird die Rücktaste NICHT funktionieren.
Der Grund: die Rücktaste ist mit der "Zurück"-Funktion des Browser verknüpft. Deshalb wird dann immer zur vorherigen Seite zurückgesprungen. Wenn kein Verlauf existiert (das passiert, wenn die URL als ERSTES aufgerufen wurde) kann auch nicht zur vorherigen Seite zurückgegangen werden, deshalb funktioniert die Rücktaste auch anscheinend so wie sie sollte. -
Ich kann mir nicht vorstellen, dass mit Javascript solche Funktionen umgangen werden können; dies würde einen bedeutenden Eingriff darstellen, den die Browserhersteller sicher nicht ermöglichen werden.
Die einzige Lösung (außer der, die Nutzer einfach freundlich darauf hinzuweisen) ist die, mit einem Link auf die Seite zu verweisen, der automatisch in einem neuen Tab öffnet:
<a href="#" target="blank">link</a>
-
hackyourlife schrieb:
Ich bastle hier spaßhalber an einer Fake-Shell. Das Problem dabei ist nur, dass Tasten wie z.B. die Rücktaste im Browser mit einer Funktion hinterlegt sind. Daher lässt sie sich nicht richtig verwenden (Rücktaste => Verlauf zurückgehen). Wie bekomme ich das trotzdem hin?
Schau dir mal die Funktionen onbeforeunload und ununload an, vielleicht könntest du das Verlassen der Seite damit verhinden (return false). -
Jetzt gibt es noch ein neues Problem: über JavaScript bekomme ich nur Key-Codes, diese sind aber bei jedem Keyboard-Layout die gleichen. Die Frage ist jetzt, wie ich Key-Codes so übersetzen kann, dass ich am Ende einen Character-Code bekomme, der Tastaturlayout-unabhängig ist (auf einem US-Keyboard '!' => !, auf einem DE-Keyboard '!' auch => !, obwohl das andere Tasten sind).
-
Es gibt eine andere Lösung die diese Beschränkung umgeht: ein unsichtbares Textfeld.
Genau diese Variante ist jetzt auch in der Online-Shell verbaut, die hier direkt auf der Seite integriert zu finden ist.
Kurz die Funktionsweise für Interessierte:
Ein Textfeld wird an den Koordinaten x = -1000 und y = -1000 dargestellt. Der Fokus liegt immer am Textfeld. Sobald der Benutzer irgendwo hinklickt wird der Fokus wieder auf das Textfeld gelegt. Somit wird Text markieren und kopieren auch unmöglich, das stört hier aber nicht weiter.
Auf das Textfeld wird dann ein Keylistener registriert der jeden Tastendruck richtig mitbekommt.
Folgender Code verhindert vom Keylistener aus, dass der Browser irgendwie auf die Tastendrücke reagiert:
So bekommt man auch Tasten wie Escape, Funktionstasten, Pfeiltasten, Tab, Enter, Shift, Alt, Strg.try { // For non-IE browsers event.stopPropagation(); event.preventDefault(); } catch (e) { }
Leider funktioniert das wie immer nicht in jedem Browser... im IE kann man z.B. Strg+D nicht verwenden, da das der Browser trotzdem interpretiert, typisch IE halt.
Beim Keylistener bekommt man ein Event mit folgenden Daten:
event.keycode = der Tastencode
event.charcode = Der Zeichencode, falls die Taste ein normales Zeichen war
event.ctrlKey = ob die Strg-Taste gedrückt ist
event.altKey = ob die Alt-Taste gedrückt ist
Wenn ein Enter eingegeben wird wird die gesamte Zeile ausgewertet... wer es testen will kann das auf hackyourlifes Seite machen.
Die verbesserte Variante dieser Shell erlaubt noch einen Datenstrom Server->Client auch wenn der Client keine Taste drückt, das lässt sich hier bei der "Web-Shell" bewundern. Ebenfalls ist dort Escape sowie Strg+Irgendwas richtig implementiert...
Das Thema kann somit geschlossen werden, da alles Notwendige erklärt wurde. -
Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!
lima-city: Gratis werbefreier Webspace für deine eigene Homepage