starwarskid1: auf window.location.href mit window.onload warten

Hallo!

Meine aktuelle Seite ist "aktuelleseite.html". :)
Wenn ich in meinem Script das folgende schreibe:

window.location.href = "andereseite.htm";
alert(window.location.href);

wird mir die Adresse von "aktuelleseite.html" und nicht von "andereseite.htm" angezeigt. Das liegt wahrscheinlich daran, dass "andereseite.htm" noch nicht aufgebaut wurde, in der kurzen zeit.

wenn ich jetzt aber schreibe:

window.location.href = "andereseite.htm";
window.onload = f1;
function f1() {
  alert(window.location.href);
}

hilft das nicht weiter! Ich denke weil sich das "window" in "window.onload" auch noch auf "aktuelleseite.html" bezieht, oder?

wie kann ich aber sonst auf "andereseite.htm" warten? timeout ist nicht nur keine gute Lösung sondern klappt auch nicht.

  1. Hello,

    wie kann ich aber sonst auf "andereseite.htm" warten? timeout ist nicht nur keine gute Lösung sondern klappt auch nicht.

    es ist ohne Hilfskonstrukte wie z.B. Frames nicht möglich, die aktuelle Seite auszutauschen und deine Skriptinstanz dabei überleben zu lassen. Entweder muss das Skript eine andere Umgebung haben, die konstant bleibt (--> Frame) oder sie muss selbst den inhaltlichen Wechsel der Seite vornehmen (z.B. AJAX).

    MfG
    Rouven

    --
    -------------------
    sh:| fo:} ch:? rl:( br:& n4:{ ie:| mo:} va:) js:| de:] zu:| fl:( ss:) ls:& (SelfCode)
    Let Bygones Be Bygones  --  Robert Pitscottie: "Chronicles of Scotland"
    1. Hallo!

      Danke für eure Antworten!

      Ein »Nebeneinander« von Dokumente und somit Scripten ist wie gesagt nicht möglich, aber auch i.d.R. nicht nötig. Wofür brauchst du das denn?

      Ich brauche das weil ich bestimmte variablen mit bestimmten werten noch im aktuellen script die die neue seite nicht kennt/kennen kann habe. Genauer gesagt: meine alte seite bestimmt die divs die in der neuen seite sichtbar sind aufgrund von berechnungen die in der alten seite gemacht wurden!

      Man hat mir woanders den Rat gegeben window.name als zwischenspeicher zu benutzen. Das ist eine ganz gute lösung. Oder?

      es ist ohne Hilfskonstrukte wie z.B. Frames nicht möglich, die aktuelle Seite auszutauschen und deine Skriptinstanz dabei überleben zu lassen. Entweder muss das Skript eine andere Umgebung haben, die konstant bleibt (--> Frame) oder sie muss selbst den inhaltlichen Wechsel der Seite vornehmen (z.B. AJAX).

      JavaScripte laufen immer von einem (einzigen) Dokument abhängig. Wechselst du das Dokument, wird das Script gestoppt, das neue Dokument geladen und das Script ausgeführt, was eventuell darin eingebunden ist.

      Achso! Ich hatte schon gerätzelt wie sich die synchronisation bei gleichzeitig zugreifenden seiten auf das script verhält. :)

  2. Hallo,

    JavaScripte laufen immer von einem (einzigen) Dokument abhängig. Wechselst du das Dokument, wird das Script gestoppt, das neue Dokument geladen und das Script ausgeführt, was eventuell darin eingebunden ist.

    Also schreibst du diesen Code:

    window.onload = f1;
    function f1() {
      alert(window.location.href);
    }

    in das zweite Dokument, denn in dessen Kontext soll es ausgeführt werden.

    wie kann ich aber sonst auf "andereseite.htm" warten? timeout ist nicht nur keine gute Lösung sondern klappt auch nicht.

    Ein »Nebeneinander« von Dokumente und somit Scripten ist wie gesagt nicht möglich, aber auch i.d.R. nicht nötig. Wofür brauchst du das denn?

    Mathias

    1. Hallo!

      Danke für eure Antworten!

      Ein »Nebeneinander« von Dokumente und somit Scripten ist wie gesagt nicht möglich, aber auch i.d.R. nicht nötig. Wofür brauchst du das denn?

      Ich brauche das weil ich bestimmte variablen mit bestimmten werten noch im aktuellen script die die neue seite nicht kennt/kennen kann habe. Genauer gesagt: meine alte seite bestimmt die divs die in der neuen seite sichtbar sind aufgrund von berechnungen die in der alten seite gemacht wurden!

      Man hat mir woanders den Rat gegeben window.name als zwischenspeicher zu benutzen. Das ist eine ganz gute lösung. Oder?

      es ist ohne Hilfskonstrukte wie z.B. Frames nicht möglich, die aktuelle Seite auszutauschen und deine Skriptinstanz dabei überleben zu lassen. Entweder muss das Skript eine andere Umgebung haben, die konstant bleibt (--> Frame) oder sie muss selbst den inhaltlichen Wechsel der Seite vornehmen (z.B. AJAX).

      JavaScripte laufen immer von einem (einzigen) Dokument abhängig. Wechselst du das Dokument, wird das Script gestoppt, das neue Dokument geladen und das Script ausgeführt, was eventuell darin eingebunden ist.

      Achso! Ich hatte schon gerätzelt wie sich die synchronisation bei gleichzeitig zugreifenden seiten auf das script verhält. :)

      1. Hallo,

        meine alte seite bestimmt die divs die in der neuen seite sichtbar sind aufgrund von berechnungen die in der alten seite gemacht wurden!

        Man hat mir woanders den Rat gegeben window.name als zwischenspeicher zu benutzen. Das ist eine ganz gute lösung. Oder?

        Kommt darauf an, was du da bastelst - eine serverseitig-dynamische Webanwendung oder eine bloße clientseitige JavaScript-Sache.

        Wenn ersteres: Dann kannst du die Daten einfach wie üblich zum Server senden, der dann eine entsprechend angepasste Seite zurückliefert. Wenn letzteres: Wenn du JavaScript voraussetzt, fragt sich, wieso du überhaupt zwei Dokumente einsetzt (Stuchwort Single Page Application). Wenn du anderweitig Cookies voraussetzt, kannst du auch Cookies verwenden. Usw. Was die sinnvollste Lösung ist, hängt von verschiedenen Faktoren ab.

        Siehe auch:
        http://aktuell.de.selfhtml.org/artikel/javascript/wertuebergabe/
        http://aktuell.de.selfhtml.org/artikel/javascript/wertuebergabe-2/

        Mathias

        1. Wenn letzteres: Wenn du JavaScript voraussetzt, fragt sich, wieso du überhaupt zwei Dokumente einsetzt (Stuchwort Single Page Application).

          Hallo Mathias,

          danke für die Unterstützung! :)

          Meine applikation ist zurzeit rein clientseitig. Da ich aber immoment auch noch mit domain-übergreifendem-cross-frame- scripting zu kämpfen habe überlege ich wirklich demnächst mich ein bisschen in php einzuarbeiten.

          Deine Idee mit der single page application ist in meinem fall wirklich nicht schlecht. Nur leidet darunter die Übersichtlichkeit ein wenig.