dr.colossos: location = undefined bei Firefox, Opera geht

Hi,

hab hier ein komisches Problem

Ich möchte über frameObject.location.reload() einen frame "reloaden".

Leider ist im FF das location-Objekt immer null. Im IE geht's auch nicht, bei Opera geht's - was einen Syntaxfehler ausschließen sollte, oder?

Auf frameObject.src kann ich zugreifen, das leifert mir in jedem Browser die korrekte Adresse - aber wie kann ich dann refreshen?

Hat jemand eine Idee?

Danke
Servus

  1. Hallo dr.colossos,

    Ich möchte über frameObject.location.reload() einen frame "reloaden".

    Leider ist im FF das location-Objekt immer null. Im IE geht's auch nicht, bei Opera geht's - was einen Syntaxfehler ausschließen sollte, oder?

    Ich vermute, es handelt sich um eine Sicherheitsbeschränkung. Eigentlich sollte man nämlich auch die Adresse in einem iframe nicht auslesen können, iframe.src sollte auch nur die ursprüngliche Adresse liefern, die du selbst bestimmt hast und wenn der Benutzer im iframe wegnavigiert, sollte die gleichbleiben.

    Jonathan

    1. Hi,

      danke ... und wie kann ich meinen iframe nun "refreshen".

      Das soll übrigens auf user-klick geschehen, wenn's das irgendwie leichter macht ...

      Hmmm, bin gerade am überlegen ob man wohl mit javascript ein Meta-Refresh-Tag einbinden kann ...

      Ich geh erstmal schlafen,

      Danke für weitere Ideen ...

      1. Hallo dr.colossos,

        danke ... und wie kann ich meinen iframe nun "refreshen".

        Kannst du nicht. Du kannst nur dem iframe eine Adresse zuweisen. Aber nicht eine bereits geladene aktualisieren. Wenn der iframe nur eine feste Adresse anzeigen soll, mache einfach fra­me­Ob­jec­t.src="..." (evtl. mit einem fra­me­Ob­jec­t.src="about:blank" davor, wenn das nicht reicht).

        Aber die wirklich geladene Adresse kannst du nicht auslesen oder refreshen. Nur setzen.

        Jonathan

        1. Hi,

          aber wieso geht's in Opera?

          Und ich hab's auch mit anderen Frames in FF schon gemacht (eine Weile her, evtl. FF 1.5). Das waren allerdings "echte" Frames, keine iframes.

          Ich denke aber da ist was faul irgendwo, kann nicht sein, dass man Frames über Scripting nicht neuladen kann ...

          1. Ich denke aber da ist was faul irgendwo, kann nicht sein, dass man Frames über Scripting nicht neuladen kann ...

            Die Seiten müssen unter der gleichen Domain erreichbar sein.

            Struppi.

            1. Hi,

              huh? Welche Seiten? Ich möchte nur die aktuelle Seite neuladen (STRG+R / F5 simulieren), keine NEUE Seite laden.

              Oder versteh ich dich falsch?

              Danke

              1. Hi,

                huh? Welche Seiten?

                Die Seite die den Iframe beinhaltet und die Seite, die im Iframe angezeigt wird. Stichwort Same origin policy.

                Oder versteh ich dich falsch?

                Anscheinend.

                mfG,
                steckl

              2. huh? Welche Seiten? Ich möchte nur die aktuelle Seite neuladen (STRG+R / F5 simulieren), keine NEUE Seite laden.

                Du kannst die Seiten in einem Frame mit JS nur neuladen, wenn die Seite in der das JS aufgerufen wird unter der gleichen Domain erreichbar ist. Punkt.

                Oder versteh ich dich falsch?

                Ich habe mal für dich gegooled und habe diesen sehr interessanten Artikel gefunden
                http://www.quirksmode.org/js/iframe.html
                Damit dürfte sich auch dein Problem mit location geklärt haben.

                Struppi.

                1. Hi,

                  ja Struppi, hab mir deinen Link nur kurz angesehen, aber das dürfte das gewesen sein wie ich es jetzt gelöst habe.

                  Lösung:
                  alert(top.name_des_frames);
                  -> liefert ObjectWindow

                  top.name_des_frames.location existiert, kann gesetzt werden.

                  alert(document.getElementById('id_des_frames'));
                  -> liefert ObjectIFrame

                  document.getElementById('id_des_frames') location existiert NICHT => Fehler.

                  Ganz verstehen tu ich's nicht, da die location eigentlich zum Frame gehört laut SELFHTML.

                  Egal, also, refresh geht nur über den Namen des Frames ...

                  Danke für die Hilfe.

                  1. ja Struppi, hab mir deinen Link nur kurz angesehen, aber das dürfte das gewesen sein wie ich es jetzt gelöst habe.

                    Dort wird das von dir festgestellte Verhalten erläutert und Anhand einiger Beispiele auch für die verschiedenen Browser getestet.

                    Ganz verstehen tu ich's nicht, da die location eigentlich zum Frame gehört laut SELFHTML.

                    Zum Frame.window nicht zum Frame.object, aber ganz schlüssig ist das nicht, da geben ich dir recht.

                    Struppi.