Chino: Event-Handler onload zweimal benutzen?

Hi,

ich habe auf meiner Seite bereits einmal ein onload Handler mit einer Javascript Funktion belegt (rollover krams). Jetzt will ich jedoch, wenn die Seite geladen wird, das ein noch ein popup aufspringt. Wie mach ich das?

Ich hab schon das hier probiert: <body onLoad="" onload"">
Das klappt aber nicht. Auch das hier geht nicht: <body onload="" "">

Hat jemand eine Lösung? könnt mir auch mailen!

Danke

mfg

chino

  1. Hi,

    Hat jemand eine Lösung? könnt mir auch mailen!

    function MacheZuerst(){
      ....;
    }

    function UndMacheDann(){
      ....;
    }

    function MacheAlles(){
      MacheZuerst();
      UndMacheDann();

    }

    <body onload="MacheAlles();">

    Grüße,
    Martin

    1. Tach

      Hat jemand eine Lösung? könnt mir auch mailen!

      function MacheZuerst(){
        ....;
      }

      function UndMacheDann(){
        ....;
      }

      function MacheAlles(){
        MacheZuerst();
        UndMacheDann();

      }

      <body onload="MacheAlles();">

      oder: <body onload="MacheZuerst();UndMacheDann">

      Dann kannst du natürlich die Funktion MacheAlles() weglassen...

      olli
                                       ^

      Martin

      1. Moin,

        oder: <body onload="MacheZuerst();UndMacheDann">
        Dann kannst du natürlich die Funktion MacheAlles() weglassen...

        Das ist natürlich richtig - habe ich allerdings mehrere Dateien, wäre dieser Vorschlag etwas unpraktischer, da ich natürlich die Änderungen in jeder Dtai durchführen muss (und nicht jeder Editor Projekte/projetkweites Replace unterstützt).

        Grüße,
        Martin

  2. Hallo chino,

    ich habe auf meiner Seite bereits einmal ein onload Handler mit einer Javascript Funktion belegt (rollover krams). Jetzt will ich jedoch, wenn die Seite geladen wird, das ein noch ein popup aufspringt. Wie mach ich das?

    Ich hab schon das hier probiert: <body onLoad="" onload"">
    Das klappt aber nicht. Auch das hier geht nicht: <body onload="" "">

    Mit solchen Sachen habe ich auch schon, zu meinem Leidwesen erfolglose, Versuche betrieben. Ich habe mir dann mit einer "Krücke" geholfen, da es an mehreren Stellen nötig war mit der Ausführung von onLoad zu warten, bis die Seite komplett geladen war, gleichzeitig waren aber auch während des Ladevorgangs noch JavaScript-Funktionen auszuführen. Dafür gibt es nun einige Möglichkeiten sowas zu erreichen. Hier einige mir bekannte, vielleicht hilft Dir das.

    Möglichkeit A:

    <HTML>
    [...]
        <SCRIPT LANGUAGE="JavaScript">
        <!--
            function eins()
            { [...] }
            function zwei()
            { [...] }
            function drei()
            { [...] }
        //-->
        </script>
        <body>
            <SCRIPT LANGUAGE="JavaScript">
                 eins();
            //-->
            </script>
    [...(*Dein Seiteninhalt*)]

    </body>
        <body onLoad="zwei();drei();"
        </body>
    </HTML>

    Erklärung:
    Die Funktion eins wird unter Umständen während des Ladevorganges ausgeführt, die Funktionen zwei und drei auf jeden Fall erst, wenn die Seite komplett geladen ist (bis auf das letzte </body> und </HTML>).

    Möglichkeit B:

    <HTML>
    [...]
        <SCRIPT LANGUAGE="JavaScript">
        <!--
            var stop = true;
            function eins()
            { [...] }
            function zwei()
            { [...] }
            function drei()
            { [...] }
        //-->
        </script>
        <body onLoad="eins();">
    [...(*Dein Seiteninhalt*)]
            <SCRIPT LANGUAGE="JavaScript">
                 zwei();drei();
            //-->
            </script>
        </body>
    </HTML>

    Erklärung ist die gleiche wie bei A.

    Möglichkeit C (ist mir jetzt etwas zu komplex für ein Beispiel, daher nur eine kurze Erklärung):
    Du definierst am Beginn der Seite eine (oder mehrere) Steuervariable(n), die Du an passender Stelle dann auf einen Wert setzt, der Deinen Funktionen erlaubt zu starten. In der "Wartephase" der jeweiligen Funktion sorgst Du mittels TimeOut dafür, daß diese den Prozessor immer wieder freigibt und sich nach einer gewissen Zeit wieder startet um zu prüfen, ob Sie Ihre Arbeit aufnehmen kann. Die Anzahl der benutzten Steuervariablen und ihre jeweilige Bedeutung liegen in Deiner Hand. Du kannst auf diesem Weg sogar dafür sorgen, daß abhängig vom Ladestatus und den vorangegangenen Funktionszuständen die verschiedensten Funktionen anlaufen. (Falls Du an dieser Lösung interessiert bist, und auch konzeptionell tiefer in diese Materie einsteigen willst, solltest Du evtl. mal versuchen etwas über Semaphoren zu erfahren. Suchtip dazu: Informatikbibliotheken und -fakultäten)

    Ich hoffe ich konnte Dir einige Möglichkeiten aufzeigen, wie Du Dein Scheduling-Problem lösen kannst.

    Bis denndann

    Michael N.

    1. Hi Michael,

      <body>
              <SCRIPT LANGUAGE="JavaScript">
                   eins();
              //-->
              </script>
      [...(*Dein Seiteninhalt*)]

      </body>
          <body onLoad="zwei();drei();"
          </body>
      </HTML>

      Du bist Dir sicher, dass ein Dokument gemäß HTML-Standard mehr als einen Body haben kann??

      Möglichkeit B:

      ..ist eindeutig vorzuziehen.

      Grüße,
      Martin