Variable aus iFrame Anzeigen
Michael
- javascript
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?
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
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?
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
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