[JS] html in geneste iframe opvragen

Pagina: 1
Acties:

  • GoVegan
  • Registratie: Juni 2002
  • Laatst online: 14-05 07:14
het zal vast heel simpel zijn maar kom er nu gewoon niet op.
heb hier een pagina met daarin in een iframe('box") waarin een pagina word geladen, in de pagina word weer een iframe("check") geladen met daarin weer een pagina. in de pagina staat een form met een aantal textfield. nu wil ik vanuit "box" de waarde van die text fields uitlezen.

dus

Main
|
+----iframe("box")
|
+-----iframe("check")
|
+------form met fields

in de html die in iframe "box" word geladen wil ik dus de value's van de textfields opvragen.
ik probeer dit doormiddel van:
code:
1
alert(parent.document.getElementById("box").contentWindow.document.getElementById("check").contentWindow.document.forms[\'form\'].elements[\'waarde\'].value);

nu pakt hij nix

wanneer ik bij het aanmaken van iframe "check" direct wat data in vul
<iframe src="check.php" name="check" id="check" width="100%" height="30" frameborder="0" scrolling="no">WAT DATA</iframe>

dan geeft hij die "WAT DATA" wel weer als ik het opvraag met
code:
1
alert(parent.document.getElementById("box").contentWindow.document.getElementById("check").innerHTML);

maar ik wil dus de data van de pagina die daar word ingeladen.
het hoeft niet eens de waarde van het form/fields te zijn, het gaat maar om 1 variable dus alleen innerHTML zou ook mogen,

ik kom hier ff niet uit...

Verwijderd

Je hebt zoiets dus?

<browserwindow>
<iframe box>
<iframe check>
<form>
<input>

Wat geeft dan bijv. het volgende?

alert(windows.frames['check'].document.forms[0].elements[0].value);

Je moet wel zorgen dat je je iframes een name geeft naast de id

[ Voor 24% gewijzigd door Verwijderd op 16-02-2005 09:54 ]


  • GoVegan
  • Registratie: Juni 2002
  • Laatst online: 14-05 07:14
Verwijderd schreef op Wednesday 16 February 2005 @ 09:53:
Je hebt zoiets dus?

<browserwindow>
<iframe box>
<iframe check>
<form>
<input>

Wat geeft dan bijv. het volgende?

alert(windows.frames['check'].document.forms[0].elements[0].value);

Je moet wel zorgen dat je je iframes een name geeft naast de id
ja klopt zo'n opstelling heb ik.
de iframes hebben een id en een name.

als ik
alert(window.frames['check'].document.forms["formnaam"].elements["field"].value);
gebruik geeft hij aan dat "window.frames.document.forms.formnaam.elements" leeg is of geen object is..

[ Voor 11% gewijzigd door GoVegan op 16-02-2005 10:04 ]


  • RwD
  • Registratie: Oktober 2000
  • Niet online

RwD

kloonikoon

probeer het eens stapje voor stapje en niet meteen de hele .. string. Doe bijvoorbeeld
alert( window );
alert( window.frames['check'] );
alert( window.frames['check'].enzovoorts );

Als ik iets fout heb getypt vindt ik het meestal op die manier ;)

[ Voor 6% gewijzigd door RwD op 16-02-2005 10:11 ]


  • GoVegan
  • Registratie: Juni 2002
  • Laatst online: 14-05 07:14
RwD schreef op woensdag 16 februari 2005 @ 10:11:
probeer het eens stapje voor stapje en niet meteen de hele .. string. Doe bijvoorbeeld
alert( window );
alert( window.frames['check'] );
alert( window.frames['check'].enzovoorts );

Als ik iets fout heb getypt vindt ik het meestal op die manier ;)
uhu daar was ik al beetje mee bezig.

als ik bij het "check" iframe al wat texst in type dan alert hij dit wel met:
alert(document.getElementById("check").innerHTML);

maar ik wil de innerHTML van de src hebben, 1 stapje dieper dus, en daar kom ik niet op..

Verwijderd

Ik denk dat er dan toch iets fout zit in je source, want dit moet werken :) Kun je wat source tonen?

  • GoVegan
  • Registratie: Juni 2002
  • Laatst online: 14-05 07:14
Verwijderd schreef op Wednesday 16 February 2005 @ 10:46:
Ik denk dat er dan toch iets fout zit in je source, want dit moet werken :) Kun je wat source tonen?
hehe daar zat ik net ook aan te denken en alles beetje uitgekleed, en zit nu met 1 html pagina waarin een iframe zit. in dit iframe laad ik een pagina waarvan ik de source wil zien.

code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
<html>
<head>
<title>Untitled Document</title>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
</head>

<body>
<textarea name="test" cols="50" rows="20" id="test"></textarea>
<iframe src="check.php" name="check" id="check" width="100%" height="100%" frameborder="0" scrolling="auto">dezetextwilikdusniet</iframe>

<script>
document.getElementById("test").value=document.getElementById("check").innerHTML;
</script>

</body>
</html>


als ik dit draai krijg ik dus in de textarea "dezetextwilikdusniet", en ik zou graag de innerHTML van die check.php willen..

Verwijderd

Dat is logisch, je benaderd hier ook het iframe element, en niet het document wat je in de iframe laad.

<script>
document.getElementById("test").value=document.getElementById("check").innerHTML;
</script>

moet dus worden (let op de document.body)

<script>
document.getElementById("test").value = window.frames['check'].document.body.innerHTML
</script>

  • GoVegan
  • Registratie: Juni 2002
  • Laatst online: 14-05 07:14
Verwijderd schreef op Wednesday 16 February 2005 @ 11:07:
Dat is logisch, je benaderd hier ook het iframe element, en niet het document wat je in de iframe laad.

<script>
document.getElementById("test").value=document.getElementById("check").innerHTML;
</script>

moet dus worden (let op de document.body)

<script>
document.getElementById("test").value = window.frames['check'].document.body.innerHTML
</script>
of ik ben gek of...
maar hij blijft om een object vragen...

document.getElementById("test").value = document.getElementById("check").document.body.innerHTML;

geeft mij de html van de main pagina, pffff

[ Voor 19% gewijzigd door GoVegan op 16-02-2005 11:14 ]


Verwijderd

Je moet met je fikken afblijven van document.getElementById :P Wat doet mijn code bij jou? Dus MET window.frames

[ Voor 13% gewijzigd door Verwijderd op 16-02-2005 11:19 ]


  • GoVegan
  • Registratie: Juni 2002
  • Laatst online: 14-05 07:14
Verwijderd schreef op Wednesday 16 February 2005 @ 11:18:
Je moet met je fikken afblijven van document.getElementById :P Wat doet mijn code bij jou?
Hehe :) oke dan.

maar bij jouw code:
document.getElementById("test").value = window.frames['check'].document.body.innerHTML;

krijg ik de js foutmelding dat er een object vereist is.


hehe shit man, helemaal mijn fout, javascript op de verkeerde plek:
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
<html>
<head>
<title>Untitled Document</title>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
<script>
function jahoor(){
document.getElementById("test").value = window.frames['check'].document.body.innerHTML;
}
</script></head>

<body onLoad="jahoor();">
<textarea name="test" cols="50" rows="20" id="test"></textarea>
<iframe src="check.php" name="check" id="check" width="100%" height="100%" frameborder="0" scrolling="auto">dezetextwilikdusniet</iframe>



</body>
</html>


dit werkt dus, wel.

mensjes, hardstikke bedankt vooral meneer gordijnstok _/-\o_

[ Voor 65% gewijzigd door GoVegan op 17-02-2005 10:15 ]


Verwijderd

Wat ik dan vermoed is dat je te snel het verzoek indient voor de inhoud, en dat de iframe nog niet gereed is voor je scripting. Ik ga zelf wel even iets proberen :)

Verwijderd

Dit werkt wel, het frame wordt te snel aangeroepen dus.

code:
1
2
3
4
5
6
7
8
9
10
11
<iframe src="check.html" onload="test();" name="check"></iframe>
<div id="status"></div>

<script type="text/javascript">
var frame = window.frames['check'];
var status = document.getElementById('status');
function test(){
status.innerHTML = frame.document.forms[0].elements[0].value
}
//test();
</script>
Pagina: 1