Sigrun: Zwei onload-Funktionen ausführen

Hi,
ich habe in meiner Javascript-Bibliothek zwei Dateien, die u.a. jeweils eine onload-Funktion enthalten.
Bisher brauchte ich diese in unterschiedlichen Anwendungen.
Jetzt habe ich eine Anwendung, bei der zu Beginn beide Funktionen ausgeführt werden sollten.
Natürlich könnte ich eine 3. Datei definieren, und dort die beiden Funktionen hzusammenführen.
Wegen der Wartung gefällt mir dies aber nicht.
Kennt Ihr eine einfachere Möglichkeit?
Gruß
Sigrun

  1. Hallo!

    Schau mal hier:
    </archiv/2008/12/t181083/#m1197248>

    Mathias

    1. Hi,

      danke für den Link,
      bis jetzt habe ich noch nicht viel verstanden.
      Muss morgen weitermachen.
      Wär schön, wenn Du mir dann ggf. Nachfragen beantworten könntest.
      Gruß
      Sigrun

      1. bis jetzt habe ich noch nicht viel verstanden.

        Zusammengefasst:
        Verwende eine Helferfunktion, die das Registrieren von mehreren Event-Handlern erlaubt.
        Eine solche gibts speziell für das dokumentweite load-Ereignis, addLoadEvent, oder auch für alle möglichen Events bei beliebigen Elementen, die nennt sich dann üblicherweise addEvent.

        Die werden üblicherweise so eingesetzt:

        addLoadEvent(initFunktion1);
        addLoadEvent(initFunktion2);

        bzw.

        addEvent(window, "load", initFunktion1);
        addEvent(window, "load", initFunktion2);

        Den Code dieser Helferfunktionen, die du in deine Scripte einbinden müsstest, findest du hinter den Links.

        Mathias

        1. Hallo Mathias,

          Den Code dieser Helferfunktionen, die du in deine Scripte einbinden müsstest, findest du hinter den Links.

          jetzt habe ich einmal versucht, die Dokumente hinter den links zu verstehen.
          Bei den englischen Beiträgen habe ich schnell aufgegeben: Für mich neues komplexes Javascript und noch in Englisch - das war mir zuviel.
          Zitat aus Selfhtml:
          Dazu sind allerdings Helferscripte nötig, deren Funktionsweise schwer zu verstehen ist. Sie erzeugen immer neue Funktionen, die die bestehende Handler-Funktion und die neue, zusätzliche Handler-Funktion einschließen. Man spricht von sogenannten Wrapper-Funktionen.
          Ende des Zitats

          Etwas verständlicher ist der deutsche Artikel (Vorversion von Selfhtml 9.0):

          Nachteile des traditionellen Event-Handlings und Alternativen

          Allerdings ist frustrierend, dass der Internet Explorer häufig eine Ausnahme macht. Und ausgerechnet das Kapitel
              Browserübergreifendes Event-Handling
              Verwrirrung - drei Modelle?!

          wo sicher Beispiele sein werden, ist noch nicht vorhanden.
          Weißt Du bis wann die Version 9 freigegeben wird?
          Gruß
          Sigrun

          1. Naja, im Grunde kannst du dir es recht einfach machen; die besagte addLoadEvent-Funktion ist diese:

            function addLoadEvent(func) {  
              var oldonload = window.onload;  
              if (typeof window.onload != 'function') {  
                window.onload = func;  
              } else {  
                window.onload = function() {  
                  if (oldonload) {  
                    oldonload();  
                  }  
                  func();  
                }  
              }  
            }
            

            Aufrufen dann im einen Script mit

            addLoadEvent(initFunktion1);

            In einem weiteren lässt sich dann eine zusätzliche Funktion registrieren, die beim onload aufgerufen wird:

            addLoadEvent(initFunktion2);

            und so weiter.

            Nachteile des traditionellen Event-Handlings und Alternativen

            Allerdings ist frustrierend, dass der Internet Explorer häufig eine Ausnahme macht. Und ausgerechnet das Kapitel
                Browserübergreifendes Event-Handling
                Verwrirrung - drei Modelle?!

            wo sicher Beispiele sein werden, ist noch nicht vorhanden.

            *g* Den Teil werde ich ergänzen, wenn ich dazu komme (die Seite habe hauptsächlich ich geschrieben). Es wird aber auch nur um die besagten addEvent-Funktionen gehen.

            Mathias

  2. hi Sigrun,

    man kann sich auch mal behelfen, indem man sich eine Funktion schreibt, die die beiden anderen Funktionen aufruft:

    function beideFunktionen()
         {
         meineFunktion_1();
         meineFunktion_2();
         }

    ----------------------------------

    <body onload="beideFunktionen();"> ....

    gruß
    peter