Dauerhafte Abfrage ob Taste gedrückt ist
selma
- javascript
0 jobo1 Der Martin0 selma1 Joachim
Guten Morgen,
wie sich im Titel schon erkennen lässt, benötige ich eine dauerhafte Abfrage ob und wenn ja welche Taste(n) gedrückt sind.
<html>
<body onLoad="top.window.focus()" onkeydown="navigieren(event.keyCode);">
<script type="text/javascript" language="JavaScript">
function navigieren(gehe)
{
switch(gehe){
case 40:
document.write ("unten");
break
case 37:
document.write ("links");
break
case 38:
document.write ("oben");
break
case 39:
document.write ("rechts");
break
default:
break
}
}
</script>
</body>
</html>
So macht das Script EINMAL etwas wenn ich eine Pfeiltaste drücke, allerdings bräuchte ich eben eine dauerhafte Abfrage.
Soll heisen, solange ich z.B. "Pfeiltaste nach oben" drücke, soll immer wieder eine neue Textzeile mit "oben" erscheinen, OHNE dass ich die Taste VON NEUEM drücken muss.
Ich hoffe mal das war einigermaßen verständlich erklärt
Hat jemand von euch eine Idee wie dies zu Bewerkstelligen ist?
Wenn ja wie sieht die Idee aus?
Danke schonmal und noch ein schönes Wochenende
selma
Hallo,
http://de.selfhtml.org/javascript/sprache/eventhandler.htm#onkeypress
Ansonsten ist es fehlerträchtig, eine Zeile nicht mit ";" zu beenden.
Gruß
jobo
Hallo,
<body onLoad="top.window.focus()" onkeydown="navigieren(event.keyCode);">
<script type="text/javascript" language="JavaScript">
function navigieren(gehe)
{
switch(gehe){
case 40:
document.write ("unten");
break
case 37:
document.write ("links");
break
case 38:
document.write ("oben");
break
case 39:
document.write ("rechts");
break
default:
break
}
}
</script>
</body>
das language-Attribut für das Script-Element darfst du getrost weglassen. Dass onkeypress günstiger wäre als onkeydown, hat jobo schon erwähnt.
So macht das Script EINMAL etwas wenn ich eine Pfeiltaste drücke
Natürlich, durch die Verwendung von document.write() überschreibst du ja auch das gesamte Dokument z.B. mit dem Text "oben". Danach ist es weg.
Du müsstest stattdessen entweder ein neues Element erzeugen und ins Dokument einfügen, oder den Textinhalt eines bestehenden Elements ersetzen oder ergänzen.
So long,
Martin
Hallo,
danke für die schnellen Antworten ;)
Die Textausgabe ist nur als Beispiel eig. möchte ich an der Stell ein externes PHP Script starten und dem PHP Script die gedrückte Taste ca. im 0,5-1 Sek Takt mit zu übergeben.
selma
Hi,
Die Textausgabe ist nur als Beispiel eig. möchte ich an der Stell ein externes PHP Script starten und dem PHP Script die gedrückte Taste ca. im 0,5-1 Sek Takt mit zu übergeben.
PHP weiss nix von Deiner gedrückten Taste beim Client. Dazu musst Du periodisch einen Request an den Server schicken, z.B. per Ajax.
Vorgehensweise:
onkeydown Taste auswerten, wenn gewünschte Taste gedrückt ein Script starten, dass per interval/timeout periodisch etwas tut.
onkeyup Taste auswerten, wenn gewünschte Taste losgelassen interval/timeout unterbrechen und script stoppen.
Solltest Du wirklich per Ajax periodisch Requests abfeuern wollen, solltest Du Dir über die Belastungen im Klaren sein, die auf den Server zukommen.
Gruesse, Joachim