Gerhard: Fehler in Javascript durch eventObjekt

Hallo,
ich wollte in Javascript für den IE eine eigene Routine angeben und habe deshalb "if (!eventObjekt) ..... angegeben.
Der Internet Explorer meldet nun einen Fehler "eventObjekt nicht definiert", was ja eigentlich richtig ist, aber in dem Falle sollte er ja gerade die spezielle Routine ansteuern und nich einen Fehler melden.
Was habe ich da falsch gemacht?
So long
Gerhard

  1. [latex]Mae  govannen![/latex]

    ich wollte in Javascript für den IE eine eigene Routine angeben und habe deshalb "if (!eventObjekt) ..... angegeben.
    Der Internet Explorer meldet nun einen Fehler "eventObjekt nicht definiert", was ja eigentlich richtig ist, aber in dem Falle sollte er ja gerade die spezielle Routine ansteuern und nich einen Fehler melden.

    Benutze zur Abfrage typeof und vergleiche auf "undefined"

    Cü,

    Kai

    --
    „It's 106 miles to Chicago, we got a full tank of gas, half a pack of cigarettes, it's dark, and we're wearing sunglasses“.
    „Hit it!“
    Selfzeugs
    SelfCode: sh:( fo:| ch:? rl:( br:< n4:( ie:{ mo:| va:) js:| de:> zu:) fl:( ss:| ls:?
    1. Hallo

      Benutze zur Abfrage typeof und vergleiche auf "undefined"

      Jetzt kommt zwar kein Fehler, aber wenn ich alert (typeof eventObjekt);
      angebe kommt sowohl im IE als auch im Firefox und Opera "undefined".

      So long
      Gerhard

      1. Hallo
        Hier der zugehörige Script-Teil:

          
        alert (typeof eventObjekt);  
        if (typeof eventObjekt != "undefined")         // W3C-Standard  
          {  
           window.addEventListener ("load", init, false);  
           function init()  
             {  
                     .............  
             }  
          }  
        else                                       // Internet Explorer  
          {  
           window.attachEvent ("load", init);  
           function init()  
             {  
                     ..............  
             }  
          }  
          
        
        

        So long
        Gerhard

        1. Hi,

          Hier der zugehörige Script-Teil:

          alert (typeof eventObjekt);
          if (typeof eventObjekt != "undefined")         // W3C-Standard
            {
             window.addEventListener ("load", init, false);

            
          Das event-Objekt wird bei FireFox & Co. an die Funktion automatisch als erster Parameter übergeben, die man einen auftretenden Event behandeln lässt - und muss für den IE zu diesem Zeitpunkt entsprechend "geholt" werden.  
            
          Aus deinem Code kann ich aber nicht ersehen, ob der zu einem Zeitpunkt ausgeführt wird, wo ein aufgetretener Event verarbeitet wird, bzw. es sieht mir eher so aus, als wärst du noch in der Initialisierungsphase deines Scriptes, wo erst mal die Eventhandler den Elementen zugewiesen werden. An der Stelle wäre es unsinnig, irgendwas mit dem event-Objekt anstellen zu wollen, es existiert noch gar nicht spezifisch.  
            
          MfG ChrisB  
            
          
          -- 
          „This is the author's opinion, not necessarily that of Starbucks.“
          
        2. alert (typeof eventObjekt);
          if (typeof eventObjekt != "undefined")         // W3C-Standard
            {
             window.addEventListener ("load", init, false);
             function init()
               {
                       .............
               }
            }
          else                                       // Internet Explorer
            {
             window.attachEvent ("load", init);
             function init()
               {
                       ..............
               }
            }

            
          Da hast du zwei Dinge zusammengeworfen:  
            
          1\. Das Registrieren von Handler-Funktionen  
          2\. Das Verarbeiten von Events in Handler-Funktionen  
            
          1\. Die Registrierung: Da notierst du die Handlerfunktion außerhalb der Fähigkeiten-Weiche:  
            
          function init (e) {...}  
            
          if (window.addEventListener) {  
             window.addEventListener("load", init, false);  
          } else if (window.attachEvent) {  
             window.attachEvent("onload", init);  
          }  
            
          Das ist soweit alles. Das Event-Objekt hat mit der Registrierung nichts zu tun.  
            
          2\. Die Verarbeitung. Jetzt kommt das Event-Objekt ins Spiel! Das gibt es logischerweise nur in der Handler-Funktion, hier »init« - nicht zu dem Zeitpunkt, wo du die Event-Überwachung erst startest, aber noch gar kein Event eingetreten ist.  
            
          Die Handlerfunktion nimmt das Event-Objekt als Parameter entgegen. DARIN solltest du schreiben:  
            
          function init (e) {  
             if (!e) e = window.event;  
             // Mach was mit e  
          }  
            
          Beispiel aus <http://redaktion.selfhtml.org/selfhtml-preview/javascript/einbindung.html#event-objekt>:  
            
          ~~~javascript
          function handlerfunktion (eventObjekt) {  
             // Vereinheitlichung:  
             if (!eventObjekt) {  
                // Korrektur für den Internet Explorer  
                eventObjekt = window.event;  
             }  
             ...  
          }
          

          Im Übrigen brauchst du die Handlerfunktion init nicht doppelt zu notieren. Notiere sie außerhalb der Abfrage if (document.addEventListener) {} else if (document.attachEvent) {}.

          Mathias

  2. ich wollte in Javascript für den IE eine eigene Routine angeben und habe deshalb "if (!eventObjekt) ..... angegeben.

    Verwende typeof (im Vergleich dazu)

    Mathias

    1. Hallo,
      Das im IE den Fehler produzierende "if (!eventObjekt)" habe ich aus einem Selfhtml-Artikel unter Traditionelles Event-Handling! Leider finde ich den Artikel im Augenblick nicht im Internet aber ich hatte ihn mir ausgedruckt.
      So long
      Gerhard