gerld: window.reload

Hallo JavaScript Profis,

ich habe folgendes Problem.
Ich habe mir in einem Browser Fenster per cookie das aktuelle Windows Objekt gesichert.
Im Folgefenster möchte ich das erste Fenster aktualisieren.
Dazu lese ich das cookie wieder und versuche mit window.reload(); das erste Fenster zu refreshen.

Aber das funktioniert nicht.

Ist so etwas überhaupt grundsätzlich möglich?

  1. Ich habe mir in einem Browser Fenster per cookie das aktuelle Windows Objekt gesichert.

    Cookies speichern nur Text, keine Objekte.
    Wenn du das window-Objekt in einem Cookie speicherst, so wird es in einen String umgewandelt, mit dem du später überhaupt nichts anfangen kannst.

    Im Folgefenster möchte ich das erste Fenster aktualisieren.

    Wie das denn, es ist doch ohnehin weg? Oder arbeitest du mit Popups oder Frames? Dann kannst du z.B. aus einem Popup mit opener auf das Ursprungsfenster zugreifen.
    Siehe auch http://aktuell.de.selfhtml.org/artikel/javascript/fensterzugriff/
    Beschreibe einfach mal deine Aufgabenstellung.

    Mathias

    1. Ich habe mir in einem Browser Fenster per cookie das aktuelle Windows Objekt gesichert.

      Cookies speichern nur Text, keine Objekte.
      Wenn du das window-Objekt in einem Cookie speicherst, so wird es in einen String umgewandelt, mit dem du später überhaupt nichts anfangen kannst.

      Im Folgefenster möchte ich das erste Fenster aktualisieren.

      Wie das denn, es ist doch ohnehin weg? Oder arbeitest du mit Popups oder Frames? Dann kannst du z.B. aus einem Popup mit opener auf das Ursprungsfenster zugreifen.
      Siehe auch http://aktuell.de.selfhtml.org/artikel/javascript/fensterzugriff/
      Beschreibe einfach mal deine Aufgabenstellung.

      Mathias

      Ich schieb:

      Im Folgefenster möchte ich das erste Fenster aktualisieren.
      Dann ist für mich klar, dass beide Browserfenster geöffnet sind.

      Wenn ich das Objekt nicht per cookie sichern kann, gibt es dann eine andere Möglichkeit?

      1. Hi,

        bitte zitiere vernuenftig.

        Ich schieb:

        Was und wohin?

        Im Folgefenster möchte ich das erste Fenster aktualisieren.
        Dann ist für mich klar, dass beide Browserfenster geöffnet sind.

        Damit ist immer noch nicht klar, *wie* das "Folgefenster" geoeffnet wird. Mensch, drueck dich doch mal ein bisschen praeziser aus! </hilfe/charta.htm#tipps-fuer-fragende>

        Wenn ich das Objekt nicht per cookie sichern kann, gibt es dann eine andere Möglichkeit?

        Wie schon gesagt wurde, wenn das Fenster mittels window.open geoeffnet wurde, bspw. opener.

        MfG ChrisB

        --
        „This is the author's opinion, not necessarily that of Starbucks.“
      2. Wenn ich das Objekt nicht per cookie sichern kann, gibt es dann eine andere Möglichkeit?

        Weil die Antwort auf diese Frage »Nein« lautet, schrieb ich: Beschreibe mal deine Aufgabenstellung. Entweder die beiden Fenster können über opener bzw. den Rückgabewert von window.open aufeinander zugreifen oder gar nicht.

        Mathias

  2. Ich habe mir in einem Browser Fenster per cookie das aktuelle Windows Objekt gesichert.

    Das geht nicht, du kannst in cookies nur Strings abspeichern.

    Im Folgefenster möchte ich das erste Fenster aktualisieren.

    Wie willst du ein Fenster das nicht mehr existiert aktualisieren?
    Oder meinst du wirklich Fenster, die mit window.open() geöffnet wurden?
    Dann suchst du evtl. opener

    Struppi.

  3. gruss gerald,

    Dazu lese ich das cookie wieder und versuche mit window.reload();
    das erste Fenster zu refreshen.

    selbst, wenn Du unten stehende ratschlaege beherzigst und zugriff auf
    das gewuenschte [window]-objekt haben solltest, wird Dir ein refresh
    nicht gelingen:

    • erstens ist [reload] eine methode des [location]-objekts; demzufolge
        lautet die anweisung: »[windowObject].[link:http://de.selfhtml.org/javascript/objekte/location.htm#reload@title=location.reload(true)];«

    • zweitens wird Dir der zugriff auf jegliche eigenschaft Deines
        gewuenschten [window]-objekts verweigert, sobald das referenzierte
        dokument dieses fensters die »same origin policy« verletzt.

    Ist so etwas überhaupt grundsätzlich möglich?

    so aus dem bauch heraus? - ja.

    so long - peterS. - pseliger@gmx.net

    --
    »Because objects in JavaScript are so flexible, you will want to think differently about class hierarchies.
    Deep hierarchies are inappropriate. Shallow hierarchies are efficient and expressive.« - Douglas Crockford
    ie:( fl:) br:> va:( ls:& fo:) rl:) n3;} n4:} ss:} de:µ js:} mo:? zu:]
    1. gruss gerald,

      Dazu lese ich das cookie wieder und versuche mit window.reload();
      das erste Fenster zu refreshen.

      selbst, wenn Du unten stehende ratschlaege beherzigst und zugriff auf
      das gewuenschte [window]-objekt haben solltest, wird Dir ein refresh
      nicht gelingen:

      • erstens ist [reload] eine methode des [location]-objekts; demzufolge
          lautet die anweisung: »[windowObject].[link:http://de.selfhtml.org/javascript/objekte/location.htm#reload@title=location.reload(true)];«

      • zweitens wird Dir der zugriff auf jegliche eigenschaft Deines
          gewuenschten [window]-objekts verweigert, sobald das referenzierte
          dokument dieses fensters die »same origin policy« verletzt.

      Ist so etwas überhaupt grundsätzlich möglich?

      so aus dem bauch heraus? - ja.

      so long - peterS. - pseliger@gmx.net

      Danke Peter,

      hier noch einmal im Telegrammstiel, was ich machen will.

      Fenster 1
       Listet Datenbankinhalte

      User will Datenbanzeile (row)  ändern
        Fenster 2 wird geöffnet mit win=window.open(adresse,“titel“);

      Fenster 2
       Update/Delete/Insert Datenbankinhalte
      Nach der Datenbankaktion soll Fenser 1 aktualisert werden.

      Wie löst Du so etwas?

      1. Hi,

        zitiere bitte vernuenftig!

        Wie löst Du so etwas?

        Ueber window.opener, wurde doch jetzt schon mehrfach gesagt.

        MfG ChrisB

        --
        „This is the author's opinion, not necessarily that of Starbucks.“
      2. hallo again gerald,

        Fenster 1
        Listet Datenbankinhalte

        User will Datenbanzeile (row)  ändern
          Fenster 2 wird geöffnet mit win = window.open(adresse, “titel“);

        die [Fenster 2] referenzierende variable [win] innerhalb von [Fenster 1]
        braucht es nochnichteinmal.

        Fenster 2
        Update/Delete/Insert Datenbankinhalte
        Nach der Datenbankaktion soll Fenser 1 aktualisert werden.

        Wie löst Du so etwas?

        ohne jetzt AJAX ins spiel zu bringen ungefaehr so:

        1. der update Deiner datenbank erfolgt ja hoechstwahrscheinlich durch
             das abschicken eines formulars ... die klassiche rueckmeldung waere
             dann ein weiters dokument, welches nach [Fenster 2] geladen wird.
             das javascript dieses dokuments verbaeckt dem load-event des fensters
             dann die aktualisierung von [Fenster 1]:

        ~~~javascript (function () {

        if (window.addEventListener) {

        window.addEventListener("load", (function () {

        if (opener && opener.location && opener.location.reload) {
                  opener.location.reload(true);
                }
              }), false);

        } else if (window.attachEvent) {

        window.attachEvent("onload", (function () {

        if (opener && opener.location && opener.location.reload) {
                  opener.location.reload(true);
                }
              }));
            }
            delete arguments.callee;

        })();

          
        2) alternativ koennte man auch versuchen, [Fenster 1] durch scripting  
           nachtraeglich einen [name] zu verpassen, um dieses fenster dann  
           moeglicherweise innerhalb der window/frames-hierarchie ueber das  
           html-target-attribut von links oder eben wie in diesem fall von  
           formularen adressieren zu koennen:  
          
           ... meinetwegen auch auf \*onload\* ... »`window.name = "dbState"`{:.language-javascript}«  
          
           falls das geht - ich hab' das nie getestet - bekommt das formular  
           des in [Fenster 2] liegenden dokuments ein target-attribut, dessen  
           wert mit dem durch das scripting in [Fenster 1] gesetzten namen  
           uebereinstimmt. perfekt waere es natuerlich, wenn die [action] des  
           formulars die gleichlautende dokumenten-adresse aus [Fenster 1]  
           bekaeme.  
           das durch den serverprozess nach [Fenster 1] zurueckgegebene dokument  
           entspraeche dann in adresse/referenzierung, form/aufbau/struktur dem  
           schon zuvor geladenem dokument.  
          
          
          
        gute nacht - peterS. - pseliger@gmx.net  
          
          
        
        -- 
        »Because objects in JavaScript are so flexible, you will want to think differently about class hierarchies.  
        Deep hierarchies are inappropriate. Shallow hierarchies are efficient and expressive.« - [Douglas Crockford](http://javascript.crockford.com/)  
          
        [ie:( fl:) br:> va:( ls:& fo:) rl:) n3;} n4:} ss:} de:µ js:} mo:? zu:\]](http://www.peter.in-berlin.de/projekte/selfcode/?code=ie%3A%28+fl%3A%29+br%3A%3E+va%3A%28+ls%3A%26+fo%3A%29+rl%3A%29+n3%3B%7D+n4%3A%7D+ss%3A%7D+de%3A%B5+js%3A%7D+mo%3A%3F+zu%3A%5D)