David Ortmann: Schnellerer Event-Handler als onLoad?

Hallo,
nur ganz kurz, habe leider bei meiner Forumssuche keine Antwort gefunden (aber vielleicht habe ich auch falsch gesucht):
Gibt es einen event-Handler, der schneller als onLoad reagiert, d.h. schon ausgelöst wird, während die Seite lädt?
Ich benötige dieses Event für ein "Frame-Nachlade"-Skript, wie es hier auch beschrieben wird - bisher funktioniert es, aber die Abfrage, ob der Frame existiert bzw. im Frameset, ob ein Parameter übergeben worden ist, greift eben erst nach Laden aller Bilder etc. - das ist mir etwas zu langsam.

Mir fällt keine andere Möglichkeit ein, da das Skript extern eingebunden ist und ich es nicht jeder Datei in den Body schreiben will bzw. ich nicht weiß, wie ich im Frameset ein Skript so platziere, dass es sofort ausgelöst wird.

Viele Grüße, würde mich über Antwort sehr freuen,
David Ortmann

  1. Hallo,

    Gibt es einen event-Handler, der schneller als onLoad reagiert, d.h. schon ausgelöst wird, während die Seite lädt?

    Nein. Microsoft bietet aber einige zusätzliche Events an (vielleicht onreadystatechange), aber die funktionieren auch nur im Internet Explorer.

    Ich benötige dieses Event für ein "Frame-Nachlade"-Skript, wie es hier auch beschrieben wird - bisher funktioniert es, aber die Abfrage, ob der Frame existiert bzw. im Frameset, ob ein Parameter übergeben worden ist, greift eben erst nach Laden aller Bilder etc. - das ist mir etwas zu langsam.

    Ich verstehe nicht ganz, was du meinst. Dir geht es darum, dass eine Unterseite nicht außerhalb des Framesets aufgerufen werden soll? Oder was soll das Script im Frameset-Dokument prüfen? Kannst du ein Beispiel online stellen?

    Mir fällt keine andere Möglichkeit ein, da das Skript extern eingebunden ist und ich es nicht jeder Datei in den Body schreiben will bzw. ich nicht weiß, wie ich im Frameset ein Skript so platziere, dass es sofort ausgelöst wird.

    Das Einbinden über eine script-Element führt dazu, dass das externe Script sofort ausgeführt wird, sofern dort nicht alles in Funktionen untergebracht ist, die nicht aufgerufen werden. Der Zugriff auf das Dokument bzw. die Frame-Dokumente ist darin nicht immer möglich.

    Mathias

    1. Hi,

      Ich verstehe nicht ganz, was du meinst. Dir geht es darum, dass eine Unterseite nicht außerhalb des Framesets aufgerufen werden soll? Oder was soll das Script im Frameset-Dokument prüfen? Kannst du ein Beispiel online stellen?

      Klar, hatte es auch im Forum eingetragen, es wurde aber nicht wirklich angezeigt. Wenn man unter http://www.TheatergruppeSchulpforta.de/ z.B. nicht die Hauptseite, sondern z.B. durch Google http://www.TheatergruppeSchulpforta.de/salome1.htm aufruft, lädt der Browser die Seite, erkennt _nach dem Laden_ (das ist das Problem), dass das Frameset nicht angezeigt wird, springt auf die Hauptsite, die wiederum _nach dem Laden_ überprüft, ob ihr per "?" ein Parameter übergeben wurde, und springt dann im Frame auf diese Seite zurück. Damit kann ich sicherstellen, dass auch Usern aus Suchmaschinen die volle Frame-Navigation zur Verfügung steht.

      Das Einbinden über eine script-Element führt dazu, dass das externe Script sofort ausgeführt wird, sofern dort nicht alles in Funktionen untergebracht ist, die nicht aufgerufen werden. Der Zugriff auf das Dokument bzw. die Frame-Dokumente ist darin nicht immer möglich.

      Es sind tatsächlich alles Funktionen.

      Viele Grüße,
      David

      1. Hallo,

        Wenn man unter http://www.TheatergruppeSchulpforta.de/ z.B. nicht die Hauptseite, sondern z.B. durch Google http://www.TheatergruppeSchulpforta.de/salome1.htm aufruft, lädt der Browser die Seite, erkennt _nach dem Laden_ (das ist das Problem), dass das Frameset nicht angezeigt wird

        Diese Abfrage kannst du auch schon vor Abschluss des Ladens ausführen, ohne dass Fehler auftreten.

        springt auf die Hauptsite, die wiederum _nach dem Laden_ überprüft, ob ihr per "?" ein Parameter übergeben wurde, und springt dann im Frame auf diese Seite zurück.

        Das kannst du einfacher serverseitig lösen, siehe beispielsweise http://aktuell.de.selfhtml.org/artikel/phpasp/php-frames/.

        Das Einbinden über eine script-Element führt dazu, dass das externe Script sofort ausgeführt wird, sofern dort nicht alles in Funktionen untergebracht ist, die nicht aufgerufen werden.

        Es sind tatsächlich alles Funktionen.

        Dann schreibe den Code direkt in die Script-Datei ohne Funktion. Oder rufe die Funktion direkt in dem jetzt leeren script-Element auf der Unterseite auf.
        <script type="text/javascript" src="scripts.js"></script>
        <script type="text/javascript">
        checkFrameset0();
        </script>

        Mathias

        1. Hallo noch mal,

          ich habe jetzt, ausgehend von deinen Vorschlägen und eigenen Ideen zum Problem, einen Lösungsansatz umgesetzt (ohne PHP, da bin ich nämlich gar nicht fit):
          a) Der erste Teil der Abfrage, der ja von den Unterseiten ausgeht, wird nun nicht mehr nur durch onLoad, sondern zusätzlich von OnMouseMove ausgelöst, da es ja recht wahrscheinlich ist, dass ein Surfer die Maus bewegt. Ich denke (hoffe), dass diese Abfrage auch während des Ladens schon greift. - Nicht die kosmetisch schönste, aber evtl. funktionierende Lösung.
          b) Das Hauptproblem, nämlich die lange Ladezeit der Hauptseite (wegen der Zufallsbilder am Anfang), habe ich dadurch gelöst, dass nun nicht mehr der Frameset wartet, dass alle Frame geladen wurden und dann die Abfrage startet, sondern das schon der kleine obere Frame, der ja recht fix geladen wird, die Abfrage durchführt. Ich hatte erst ein paar Schwierigkeiten, die Frames genau anzusteuern, aber das hat dann schließlich geklappt.

          Werde die Änderungen Stück für Stück hochladen - danke für die Hilfe. Das Problem ergibt sich ja ohnehin nur bei langsamen modems (wie ich es etwa habe), da bei hohen Übertragungsraten auch das Laden der großen Zufallsbilder kaum mehr ins Gewicht fällt.

          Dankeschön,
          David

          1. Hi,

            a) Der erste Teil der Abfrage, der ja von den Unterseiten ausgeht, wird nun nicht mehr nur durch onLoad, sondern zusätzlich von OnMouseMove ausgelöst,

            Warum?
            Warum führst Du die Abfrage nicht direkt durch?
            Ganz ohne Eventhandler?

            cu,
            Andreas

            --
            Warum nennt sich Andreas hier MudGuard?
            Schreinerei Waechter
            Fachfragen per E-Mail halte ich für unverschämt und werde entsprechende E-Mails nicht beantworten. Für Fachfragen ist das Forum da.
            1. Hallo,

              Hi,

              a) Der erste Teil der Abfrage, der ja von den Unterseiten ausgeht, wird nun nicht mehr nur durch onLoad, sondern zusätzlich von OnMouseMove ausgelöst,

              Warum?
              Warum führst Du die Abfrage nicht direkt durch?
              Ganz ohne Eventhandler?

              cu,
              Andreas

              Weil sich die 300 Dateien besser per Suchen & Ersetzen um einen zusätzlichen Event-Handler als um ein reguläres Skript erweitern ließen.
              Aber du hast Recht - mittelfristig werde ich wohl schlicht auf ein normales Body-Skript umstellen...

              David

              1. Hallo,
                Habe übrigens gerade online festgestellt, dass man mit dem Onmousemove in eine Endlosschleife gerät. Merde. Werde es also korrigieren und sehr bald ein reguläres Skript einbauen.

                Viele Grüße,
                David

              2. Hi,

                Weil sich die 300 Dateien besser per Suchen & Ersetzen um einen zusätzlichen Event-Handler als um ein reguläres Skript erweitern ließen.

                Inwiefern?
                Ob Du das öffnende head-tag durch selbiges plus ein script-Element ersetzen läßt oder das öffnende body-tag durch ein um einen eventhandler erweitertes body-tag ist doch vollkommen gleichgültig.

                cu,
                Andreas

                --
                Warum nennt sich Andreas hier MudGuard?
                Schreinerei Waechter
                Fachfragen per E-Mail halte ich für unverschämt und werde entsprechende E-Mails nicht beantworten. Für Fachfragen ist das Forum da.
    2. Hallo Mathias,

      Gibt es einen event-Handler, der schneller als onLoad reagiert

      Nein. Microsoft bietet aber […]

      Ich bin vor kurzem auf eine interessante Opera-Eigenheit gestoßen:

      BeforeEvent / AfterEvent
        BeforeEventListener / AfterEventListener

      Siehe http://my.opera.com/hallvors/journal/45.

      Grüße
      Roland