iFrame und Parent-Fenster
print "<script type='text/javascript'>\n";
print "parent.document.getElementById('Tabelle').height
= document.getElementById('Tabellenzeilen').offsetHeight;\n";
print "</script>\n";
Geht nicht... Kann es vielleicht sein, dass www.domainname.de nicht mit deiner Domain identisch ist, unter der das Javascript ausgeführt wird?
Dann macht dir die Same Origin Policy einen Strich durch die Rechnung.
ich habe 2 Dateien, in Datei1.htm ist auch ein Iframe
<iframe name="fra" id="fra" src="datei2.htm" height ......></iframe>
dort gibt es ein <input name="vorname" value="Horst">.
Wie kann ich von Datei1.htm diesen Horst auslesen?
Parent sollte immer das Frameset sein. Frames ist ein Array. Du kannst über den nummerischen Index (beginnend bei Null) oder über den Namen des Frames drauf zugreifen, so, wie es auch dort steht:
parent.frames[1].document.forms[0].elements[0].value = "Stefan";
Das parent kannst Du hierbei weglassen, da Du bereits "ganz oben" bist.
Eigenschaft "contentWindow" von Frames, die für den Zugriff auf das im iFrame befindliche HTML zwingend benötigt wird:
<body>
<ElementXYZ>....
<iframe id="meinIframe" src="irgend/so/ein/dokument.htm" />
....
Javascript-Zugriff auf beispielsweise das erste Bild im iFrame:
var erstesIFrameBild = document.getElementById("meinIframe").contentWindow.document.images[0];
formularvariablen zwischen iframes übergeben:
Mehrere Möglichkeiten:
1.) Variablen mit GET Methode Übergeben
Variablen kannst du per query string übergeben. Ein Query String wird an die Url angehängt und hat die Form: http://domain.de/datei.html?name1=value1&name2=value2
Den Query String müstest du mit javascript an die Url anhängen: frame.location.href= "datei.html?name=" +urlEncode(oInput.value)+ " [...]
Wichtig ist das Texte die du über gibst "URLEncoded" sind. Im Grunde werden leer und sonderzeichen durch komische konstrukte ersetzt ^^ (leerzeichen ist %20 zumbeispiel)
2.) Variablen mit POST Methode übergeben
Du kannst ein Formular direkt an einen anderen Frame abschicken:
<form method="post" action="datei.html" target="framename">[...]
Auf der Seite kannst du die Variablen dann per z.B. PHP auslesen.
3.) Variablen per DOM Übergeben
Du kannst dich auch ausschließlich auf JavaScript verlassen und die Variablen client seitig zwischen den einzelen DOMs übergeben:
<frame1>
function myEventHandler(str)
{
oFrame = [...]
oFrame.document.myVariable = str;
<frame2>
function test()
{
alert(window.document.myVariable);
}
4.) UserData Store
Im IE gibt es einen CLient Seitigen User Data Store, eine XML Datei irgendwo im IE Verzeichnis in die du per javascript schreiben und lesen kannst. Das ding ist persistent und überlebt auch sessions - eine art client seitiger cookie ;) Mehr dazu findest du sicher im msdn..
5.) Verzichte auf die Frames
Frames braucht kein mensch mehr. schmeiß die dinger raus und benutze server side includes um document teile auszulagern. frames machen aggressiv - mich zumindest :)


Links zu diesem Post:
Link erstellen
<< Startseite