Michael: Variable aus iFrame Anzeigen

Hallo zusammen,

ich habe in "DateiA.htm" einen iFrame mit name="Information" definiert und mit src="DateiB.htm" zugeordnet. In "DateiB", also die Datei, die im iFrame angezeigt wird, habe ich eine JS-Variable

var Info = "Irgend was";

Nun möchte ich in der "DateiA.htm", also der übergeordneten Datei die Variable "Info" aus der "DateiB.htm" im iFrame anzeigen. Dazu codierte ich in "DateiA.htm" die Zeile:

document.write("Info: " + Information.Info);

Angezeigt wird nun

Info: undefined

In SelfHTML wird nur erklärt, wie man über das Elternelement parent eine Variable im anderen Frame anspricht, jedoch nicht umgekehrt und auch nicht, wie bei iFrames. Wie muss ich die Zeile richtig schreiben?

  1. So etwas funktioniert aus Sicherheitsgründen bei den meisten Browsern nicht.

    Stell dir vor, jemand läd eine fremde Seite in den iframe und kann dann mit den Variablen spielen.

    Deshalb solltest du das andersherum anlegen.
    Schicke von DateiB einen Befehl zum ändern der Variable in DateiA aus. Anschließend kannst du noch die Funktion zur Weiterverarbeitung von Info aufrufen.

    Gruß Andy

    1. So etwas funktioniert aus Sicherheitsgründen bei den meisten Browsern nicht.

      Dieses Argument ist nicht ganz nachvollziehbar, da ich ja über parant.frameName.Variable auf Nachbarframes zugreifen kann, in dem ich auch fremde Seiten laden kann.

      Schicke von DateiB einen Befehl zum ändern der Variable in DateiA aus. Anschließend kannst du noch die Funktion zur Weiterverarbeitung von Info aufrufen.

      Mit deinem Vorschlag habe ich experimentiert, jedoch ohne Erfolg.

      von "DateiB.htm" aus ein

      parent.infoA = Info;

      In "DateiA.htm" unter <script...> die Variable

      var InfoA

      definiert und nach dem iFrame testweise ein

      alert(infoA);

      gesetzt. Ohne Erfolg. Anscheinend muss man iFrames anders behandeln, als normale Frames, oder?

      1. Ok, natürlich kann ich mir irren. Im IE gibt es auch besondere iframe-einstellungen, womit du mit deiner Theorie recht haben könntest, dass iframes anders als normale Frames behandelt werden.

        Also bei mir hat es wunderbar funktioniert mit dem Variablen übergeben. Allerdings habe ich es beim letzten mal etwas anders gemacht. Ich hatte in DateiA ein Formularfeld, in das ich die Variable reingeschrieben habe (parent.form.textfeld.value=Info) und danach habe ich von DateiB eine in DateiA definierte Funktion aufgerufen (parent.funktion())

        Dies hat bei mir funktioniert.

        Gruß Andy

  2. Hi,

    document.write("Info: " + Information.Info);

    frames["Information"].Info

    Und beachte, daß das Frame-Dokument erstmal geladen und interpretiert werden muß! Das dürfte ein sofortiges write() problematisch machen. ;)

    Ein späteres write() hingegen löscht das Dokument - nebst IFrame und all seinen Variablen. Das dürfte dann den Zugriff problematisch machen. ;>

    Gruß, Cybaer

    --
    Hinweis an Fragesteller: Fremde haben ihre Freizeit geopfert, um Dir zu helfen. Helfe Du auch im Archiv Suchenden: Beende deinen Thread mit einem "Hat geholfen" oder "Hat nicht geholfen"!