Snoot: Tastatureingabe prüfen - Firefox will nicht

Hio,

ich will eine Funktion nur dann aufrufen, wenn irgendeine Taste - mit Ausnahme der vier Pfeiltasten - gedrückt wurde.

Im IE und Opera scheint das relativ einfach zu klappen:

function load(liste)  
{  
  if(!(event.keyCode == 37 || event.keyCode == 38 || event.keyCode == 39 || event.keyCode == 40))  
  {  
    var k = new keynavigation(document.getElementById(liste));  
    k.init();  
  }  
}

Firebug meldet mir hier aber:

"event is not defined
load("navitree")key.html (Linie 115)
onkeyup(keyup charCode=0, keyCode=37)
if(!(event.keyCode == 37 || event.keyC...t.keyCode == 39 || event.keyCode == 40))"

Ich habe zumindest schon rausgefunden, dass man die Eingabe für verschiedene Browser wohl unterschiedlich abfragen muss (dabei wird allerdings immer zwischen dem IE und "allen anderen Browsern" unterschieden, obwohl Opera bei mir ja auch läuft). Leider sind das dann (relativ lange) Codeschnipsel für andere Probleme, die ich aber nicht auf mein Script übertragen kann.

Kann mir jemand weiterhelfen?

Vielen Dank.

  1. Schade, dass Du den wesentlichen Teil des Problems bei Deiner Beschreibung weggelassen hast, nämlich die Stelle, an der Du das Event belegst. Wenn Du das nachlieferst, können wir Dir vielleicht helfen.

    Gruß, LX

    --
    X-Self-Code: sh:( fo:) ch:~ rl:° br:> n4:& ie:% mo:) va:) de:] zu:) fl:{ ss:) ls:~ js:|
    X-Self-Code-Url: http://emmanuel.dammerer.at/selfcode.html
    X-Will-Answer-Email: Unusual
    X-Please-Search-Archive-First: Absolutely Yes
    1. Schade, dass Du den wesentlichen Teil des Problems bei Deiner Beschreibung weggelassen hast, nämlich die Stelle, an der Du das Event belegst. Wenn Du das nachlieferst, können wir Dir vielleicht helfen.

      Gruß, LX

      Naja ... mehr als das gibts eigentlich nicht. Das ist die erste Funktion im Script, aufgerufen durch <input type="text" id="check" onkeyup="load('navitree')">.

      Alles, was danach noch an Code kommt, soll erst durch einen Tastendruck  ausgelöst werden. Dazu die Abfrage in meinem ersten Post. Alle Browser - außer FF - tun das auch korrekt.

      Ich finde ja leider kein einfaches Beispiel um zu wissen, was ich für die Abfrage der Tasten noch machen muss.

      1. Wo soll dann Dein Objekt "event" herkommen (außer, dass es offenbar von MSIE und Opera auf einem nichtstandardisierten Weg bereitgestellt wird)?

        Gruß, LX

        --
        X-Self-Code: sh:( fo:) ch:~ rl:° br:> n4:& ie:% mo:) va:) de:] zu:) fl:{ ss:) ls:~ js:|
        X-Self-Code-Url: http://emmanuel.dammerer.at/selfcode.html
        X-Will-Answer-Email: Unusual
        X-Please-Search-Archive-First: Absolutely Yes
        1. Wo soll dann Dein Objekt "event" herkommen (außer, dass es offenbar von MSIE und Opera auf einem nichtstandardisierten Weg bereitgestellt wird)?

          Ja, gute Frage. Wusste nicht, dass ich das einfach so beim Funktionsaufruf mitgeben kann. Neben dem IE und Opera stört das übrigens auch Chrome oder Safari nicht. Firefox eben :D

        2. Wo soll dann Dein Objekt "event" herkommen (außer, dass es offenbar von MSIE und Opera auf einem nichtstandardisierten Weg bereitgestellt wird)?

          ?? Also das eine ist eine proprietäre Erfindung von Netscape Communications Corporation, das andere ist eine proprietäre Erfindung von Microsoft Corporation.

          Lediglich DOM Events standardisiert dieses Verhalten, aber was hier gemacht wird, ist »DOM 0« und hat damit nichts zu tun.

          Mathias

      2. Naja ... mehr als das gibts eigentlich nicht. Das ist die erste Funktion im Script, aufgerufen durch <input type="text" id="check" onkeyup="load('navitree')">.

        Du musst bei Events im HTML Code, das Eventobjekt explizit übergeben.
        onkeyup="load(event, 'navitree')"

        Struppi.

        1. Du musst bei Events im HTML Code, das Eventobjekt explizit übergeben.
          onkeyup="load(event, 'navitree')"

          Struppi.

          Danke, genau das hatte noch gefehlt :)

        2. Naja ... mehr als das gibts eigentlich nicht. Das ist die erste Funktion im Script, aufgerufen durch <input type="text" id="check" onkeyup="load('navitree')">.

          Du musst bei Events im HTML Code, das Eventobjekt explizit übergeben.
          onkeyup="load(event, 'navitree')"

          Ist eigentlich irgendwo standardisiert, dass der Name "event" vom Browser verwendet wird, wenn er aus HTML-Event-Attributen einen Eventhandler erzeugt? Oder könnte es auch "e" oder "evt" heißen oder einfach gar nicht benannt sein?
          Ich habe nämlich bisher arguments[0] verwendet.

          --
          Reden ist Silber, Schweigen ist Gold, meine Ausführungen sind Platin.
          Self-Code: sh:( ch:? rl:( br:> n4:( ie:{ mo:) va:) de:> zu:} fl:| ss:| ls:~ js:|
          1. Ist eigentlich irgendwo standardisiert

            Ich wüsste noch nicht einmal davon, dass es irgendwo spezifiziert ist.

            Im Nachhinein vermute ich, dass das eine Reaktion darauf ist, dass IE window.event verwendet.

            Ich habe nämlich bisher arguments[0] verwendet.

            Das funktioniert aber nicht im IE.

            Mathias