Gast 10102010152955: location.replace()

Hallo!
Auf der Suche nach einer Möglichkeit, das Ziel (src) eines iframes mit JS zu ändern, bin ich auf folgendes Beispiel gestoßen (Originalquelltext siehe Link):

Im Scriptteil:
frame1.location.replace(Link);
Link beinhaltet die Ziel-URL.

In HTML:
<iframe width="1000" height="600" id="frame1" ></iframe>

Funktionieren tut es nicht. Zumindest nicht bei mir.
Ist der Grund, der dagegen spricht der, dass "location" eine Methode des Objekts "window" ist und "frame1" eine id und eben nicht Bestandteil des window-Objekts, oder ist der Grund ein anderer?

Wie könnte man die src des iframe-Tags sonst noch ansprechen?

  1. Im Scriptteil:
    frame1.location.replace(Link);
    Link beinhaltet die Ziel-URL.

    In HTML:
    <iframe width="1000" height="600" id="frame1" ></iframe>

    Funktionieren tut es nicht. Zumindest nicht bei mir.
    Ist der Grund, der dagegen spricht der, dass "location" eine Methode des Objekts "window" ist und "frame1" eine id und eben nicht Bestandteil des window-Objekts, oder ist der Grund ein anderer?

    Wie könnte man die src des iframe-Tags sonst noch ansprechen?

    Ansprechen der src hilft dir nicht, wenn du die history ansprechen willst.
    Du musst schon das Frame-Fenster-Document ansprechen um dessen location Objekt zu ändern.
    Der Name des Framefensters entspricht dem Wert des name-Attributs im iframe-Element, welches bei dir nicht definiert ist.

    mfg Beat

    --
    ><o(((°>           ><o(((°>
       <°)))o><                     ><o(((°>o
    Der Valigator leibt diese Fische
    1. Danke für deine Antwort. Ich bin mir jetzt nicht ganz sicher, ob ich das richtig verstanden habe.
      Wenn ich es also so abändere

      <iframe width="1000" height="600" name="frame1" ></iframe>

      soll es gehen?
      Mit deiner Antwort zu src und history komme ich momentan nicht ganz klar. Die Methode replace spricht außer dem, was die Eigenschaft href anspricht auch die history an. Aber nicht ausschließlich. Mit was spreche ich denn jetzt src an? href wäre ja eh falsch wenn ich es auf src abgesehen habe. Was gibt es sonst noch?

      1. Danke für deine Antwort. Ich bin mir jetzt nicht ganz sicher, ob ich das richtig verstanden habe.
        Wenn ich es also so abändere

        <iframe width="1000" height="600" name="frame1" ></iframe>

        soll es gehen?
        Mit deiner Antwort zu src und history komme ich momentan nicht ganz klar. Die Methode replace spricht außer dem, was die Eigenschaft href anspricht auch die history an. Aber nicht ausschließlich. Mit was spreche ich denn jetzt src an? href wäre ja eh falsch wenn ich es auf src abgesehen habe. Was gibt es sonst noch?

        Wie schon gesagt:
        Du brauchst das Equivalent zu
        window.location.replace()
        indem du den Frame ansprichst:
        _your_framename_.location.replace()

        Das src-Attribut im iframe-Element ist für dein Vorhaben irrelevant.
        Du kannst zwar den Wert nachträglich noch anpassen mit
        iframeob.src=_your_framename_.href
        Aber ich bin derzeit nicht sicher, ob dies nicht wieder einen zusätzlichen History-Eintrag erzeugt.

        mfg Beat

        --
        ><o(((°>           ><o(((°>
           <°)))o><                     ><o(((°>o
        Der Valigator leibt diese Fische
        1. Tut mir leid, der Groschen ist bei mir noch nicht gefallen. Vielleicht bin ich doch schon zu lange aus JS heraus. Ich möchte dich bitten, es mir möglichst etwas anders zu erklären oder zu formulieren. Am Besten in Babysprache :)

          Ich habe es so verstanden: Wenn ich den gegebenen Quellcode so abändere, dass ich "id" gegen "name" tausche, dass dann dieses Script funktioniert.

          Das sähe dann also z.B. so aus:

          frame1.location.replace("http://www.google.de");

          <iframe width="100%" height="500" name="frame1"></iframe>

          Anstelle von anfangs:

          <iframe width="100%" height="500" id="frame1"></iframe>

          Das funktioniert aber offensichtlich beidesmal nicht. Scheinbar mache ich noch einen Fehler. Ich verstehe aber nicht, was der Fehler ist, bzw. besser: Wie es richtig auszusehen hat. Wenn du mir das bitte verständlich machen könntest, wäre ich dir sehr dankbar.

          1. Oh Nein! Ich hab meinen Fehler gefunden!
            Wie dumm von mir zu übersehen, dass ich zuerst den iframe im body haben muss und erst danach das Script stehen darf.
            Ich hatte den JS-Teil oben im HTML-Head stehen, also noch vor dem iframe. JS kennt in diesem Falle den Namen des iframes noch nicht und kann ihn deshalb auch nicht ansprechen.