Daten aus iframe mit Javascript auslesen
Ricco
- javascript
0 Rouven0 ricco0 Felix Riesterer0 Ricco0 Felix Riesterer0 Ricco
Hi Leute, also ich habe zwei html Dateien.
test1.htm und test2.htm:
test1.htm:
<html>
<head>
<title>Test</title>
</head>
<body>
<iframe name="myiframe" src="test2.htm">
</iframe>
<script type="text/javascript">
var lod;
lod=parent.myiframe.document.testform0.testselect0.length;
</script>
</body>
</html>
test2.htm:
<form name="testform0" action="select.htm">
<p>
<select name="testselect0" size="2>
<option>1</option>
<option>2</option>
</select>
</p>
</form>
Was ich nun gerne möchte, ist an die Länge der Auswahlliste, die in test2.htm ist und die ich in test1.htm per iframe eingebunden habe, per Javascript rankommen.
Doch folgendes scheint nicht zu funktionieren:
parent.myiframe.document.testform0.testselect0.length
bzw. bekomme ich folgenden Fehler:
parent.myiframe.document.testform0 has no properties
Hi,
parent.myiframe.document.testform0 has no properties
immer schön logisch dem Aufbau nach abarbeiten:
MfG
Rouven
Was sagt uns das?
document.myiframe.document.testform0.testselect0
Danke, aber funzt immer noch nicht, jetzt bekomme ich:
Error: document.myiframe has no properties
Ciao
Ricco :)
Lieber ricco,
Error: document.myiframe has no properties
Rouven war nicht exakt genug:
Dein Script steht in einem document, das selbst auch in einem Fenster (oder, von der Betrachtungsweise her geht hier auch "frame") steht. Daher greifst Du am besten über die verfügbaren Frames zu:
[code lang =javascript]window.frames['myiframe'].document.testform0.testselect0.length[/code]
Zweite Möglichkeit (ungetestet!) wäre über das DOM den iframe zu refernzieren:
document.getElementsByName("myiframe")[0].contentWindow.document.testform0.testselect0.length
Liebe Grüße aus Ellwangen,
Felix Riesterer.
Rouven war nicht exakt genug:
Dein Script steht in einem document, das selbst auch in einem Fenster (oder, von der Betrachtungsweise her geht hier auch "frame") steht. Daher greifst Du am besten über die verfügbaren Frames zu:
window.frames['myiframe'].document.testform0.testselect0.lengthZweite Möglichkeit (ungetestet!) wäre über das DOM den iframe zu »» refernzieren:
document.getElementsByName("myiframe")[0].contentWindow.document.testform0.testselect0.length
Also, so funzt es leider auch nicht.
Bekomme den Fehler:
Error: window.frames.myiframe.document.testform0 has no properties
bzw.
Error: document.getElementsByName("myiframe")[0].contentWindow.document.testform0 has no properties
Scheint also so, als ob JavaScript testform0 nicht als Objekt ansieht, hab' aber keine AHnung warum..
Ciao
Ricco :)
Lieber Ricco,
ich habe auch etwas übersehen. Daher Dein negatives Feedback:
Also, so funzt es leider auch nicht.
Bekomme den Fehler:
Error: window.frames.myiframe.document.testform0 has no properties
bzw.
Error: document.getElementsByName("myiframe")[0].contentWindow.document.testform0 has no properties
Du hast ganz recht, wenn Du schreibst:
Scheint also so, als ob JavaScript testform0 nicht als Objekt ansieht, hab' aber keine AHnung warum..
Das warum ist leicht erklärt: Während im iFrame das HTML-Dokument noch lädt, möchte das JavaScript schon Eigenschaften von Elementen wissen, die (weil ja noch am Laden) noch nicht existieren. Man müsste also den Browser dazu kriegen, dass er erst nach derfolgreichem Laden diesen Wert ermittelt. Dazu eignet sich der Eventhandler "onload".
Mein Voschlag:
Wandle Dein Script um in eine Funktion, notiere sie im <head> Deiner "Rahmen"-Seite und notiere im <iframe>-Tag den Eventhandler "onload" mit dem Aufruf Deiner Funktion als Attributwert. Das könnte so aussehen:
test1.htm:
<html>
<head>
<title>Test</title>
<script type="text/javascript">
wertErmittler = function () {
var lod = window.frames['myiframe'].document.testform0.testselect0.length;
alert("Ermittelte Länge ist " + lod);
}
</script>
</head>
<body>
<iframe name="myiframe" src="test2.htm" onload="wertErmittler()">
</iframe>
</body>
</html>
test2.htm:
<form name="testform0" action="select.htm">
<p>
<select name="testselect0" size="2>
<option>1</option>
<option>2</option>
</select>
</p>
</form>
Im obigen Beispiel ist in test2.htm ein Syntaxfehler: size="2 hat keine schließenden Anführungszeichen...
Liebe Grüße aus Ellwangen,
Felix Riesterer.
Hi Felix,
Du bist mein Held, super!
Endlich funktioniert es :)
Also, vielen Dank und sorry, wegen dem Doppelposting.
Ciao
Ricco :)