ugrás a tartalomhoz

Szülőablak objektumainak elérése iframe js kódjából

foxmulder · 2008. Júl. 28. (H), 00.17
Sziasztok!

Lehet, hogy tök hülyeség, amit kérdezek, de el lehet érni az iframe HTML elemet tartalmazó dokumentum objektumait az iframe elemen keresztül beillesztett HTML dokumentum JavaScript kódjából?
 
1

Js

janoszen · 2008. Júl. 28. (H), 00.38
<script>window.top.window.valamiFuggveny();</script>

Ha jól emlékszem, ez csak akkor megy, ha azonos domainen van az iframe és a szülő.
2

Külön domain

Bártházi András · 2008. Júl. 28. (H), 08.34
Ha eltérő domainen vagy, akkor itt egy megoldás leírása:
http://webakademia.hu/2007/10/iframe-magassaganak-automatikus-allitasa/
6

Ha jól értem...

Velias9 · 2008. Aug. 12. (K), 17.26
..., akkor ez a megoldás csak akkor működőképes, ha a másik 'domain'-en lévő honlap azt akarja, hogy tudják az adatait. De mi van akkor, ha nem segít?

Ha jól értettem, akkor a HTML így néz ki:

...

<iframe id="beagyazott" src="www.masikdomain.hu/index.php" width="100" height="100">
	<ifame src="www.azonosdomain.hu/leolvas.htm"></iframe>
</iframe>

...
És a leolvas.htm JS kódja:

...

function kinyer()
{
	var adatok = window.location.href;
	adatok = adatok.split("?"); // Vagy '#'
	adatok = adatok[1];

	window.top.meretez(adatok);
}

...
És a gazda HTML JS kódja:

...

function meretez(adatok)
{
	// Kapott infók feldolgozása

	var iframe = document.getElementById("beagyazott");
	iframe.width = szeles; // Vagy style.width
	iframe.height = magas; // Vagy style.height
}

...
Ha mindent jól értettem akkor a beágyazott oldalnak módosítania kell a segédoldal URL címét és így ad át adatokat.

Ez így mind szép és jó (miután valaki kijavítja benne a hibákat), de mi van akkor, ha a beágyazott oldal nem segít? Gondolom akkor ennyi volt.

Nem tud valaki olyan böngészőt, ami nem kezeli ezeket a biztonsági szabályokat?

Előre is köszönöm a kiigazítást!
7

Kísérlet

Poetro · 2008. Aug. 12. (K), 22.05
Szerintem a kb 8-12 évves böngészők ilyenek. Kísérletezz Netscape 3-4, Internet Explorer 2-3 illetve Opera 3-5 verziókkal.
3

Hm...

foxmulder · 2008. Júl. 30. (Sze), 03.21
A wikidot.com-on próbálkozom egy saját Wiki-vel, de sajna sehogy sem tudom elérni az iframe tag-et tartalmazó dokumentum objektumait (az iframed HTML Javascriptjéből). Sem a window.parent-tel, sem a window.top-pal. Azt hittem valamit bénázok (a parent-tel próbálkoztam először), ám a Firebug mindkét esetben ezt üzeni:
"uncaught exception: Engedély megtagadva a tulajdonság lekérdezéséhez: Window.body"

...pedig egy domain-en vannak...

Ezek szerint nem a JS kódban volt a hiba, hanem a szerveren van tiltva a JS barkácsolás (hogyan?). Mindenesetre köszi a válaszokat. Azért egy pillantást érdemes vetni a wikidot.com-ra, szerintem tök korrekt cucc ;)
4

Gondolkozzunk már el ezen...

Ustak · 2008. Júl. 31. (Cs), 09.14
W3Schools:
"A Window object is created automatically with every instance of a <body> or <frameset> tag."
Fogtam a greasemonkeyt.
A fentiek szerint ha iframe -be belenyomok egy html-oldalt, akkor két Window objectem van, és tényleg így is van, kipróbáltam egy alert(window.location.href)-el előrször a beillesztő majd a beillesztett oldal hrefét kapom vissza. MIkor kívülről (tehát a beillesztő oldalról) Egy gombbal új dolgot nyomok az iframe-be, akkor (Firefox alat) lefut a js kód is még egyszer(tehát jön az alert -de csak az iframe-be illesztett oldal href-vel) IE6 alatt (oda is van greasemonkey) viszont nem.
No ilyen dologgal találkozott-e már valaki? Hogy viszonyulnak az ugyanolyan elemek a dokumentumban (ugye 2 head 2 body stb stb)...egy getElementsByTagname('head') -ra lenne egy tömböm? Frissül az oldal (FF alatt igen- azaz lefut megint a script) vagy nem (ie alatt nem!)
Majd utánanézek még ennek bővebben, csak mondom felvetem már ezt a dolgot, hogy van -e erre valami általános szabály, és találkoztatok e már ilyennel.
5

Ácsi

zila · 2008. Júl. 31. (Cs), 12.28
Hogy viszonyulnak az ugyanolyan elemek a dokumentumban (ugye 2 head 2 body stb stb)...egy getElementsByTagname('head') -ra lenne egy tömböm?

A getElementsByTagname a document metódusa ugye (document.getElementsByTagname) Így nem kapod vissza az keretekben lévő elemeket, mert azok egy másik ablakban vannak (mert a document meg a window-nak egy metódusa)...

További kérdés, hogy hová is nyomtad azt az alert-et onload-ra? Hogyan nyomtál új dolgot a keretbe (teljes dokumentumot, vagy csak valami módosítást nyomtál)?