selma: Dauerhafte Abfrage ob Taste gedrückt ist

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

  1. Hallo,

    http://de.selfhtml.org/javascript/sprache/eventhandler.htm#onkeypress

    Ansonsten ist es fehlerträchtig, eine Zeile nicht mit ";" zu beenden.

    Gruß

    jobo

  2. 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

    --
    Zwei Dinge sind unendlich: Das Universum und die menschliche Dummheit. Beim Universum bin ich mir aber nicht ganz sicher.
      (Albert Einstein, deutscher Physiker)
    Selfcode: fo:) ch:{ rl:| br:< n4:( ie:| mo:| va:) de:] zu:) fl:{ ss:) ls:µ js:(
  3. 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

    1. 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

      --
      Am Ende wird alles gut.