Autor Zpráva
Suta
Profil
Celý večer si lámu hlavu, googluju a testuju, bohužel neúspěšně. Jelikož se mi však chce opravdu hodně spát, raději toho dneska už nechám a spolehnu se na ostatní...

1. Mám soubor index.php.

2. Uprostřed souboru index.php načítám iframe:

<iframe src="nazev_nacitaneho_souboru_do_iframu.php (...) id="id_iframu"></iframe>


3. Soubor načítaný do iframu někde obsahuje např. <div id="misto_zobrazeni"></div>

4. Na konci souboru index.php chci javascriptem změnit obsah toho divu s id "misto_zobrazeni" uvnitř iframu.

JAK NA TO?


(takto jsem to zkoušel při posledním zoufalém snažení):


<script>
var iframe = document.getElementById('id_iframu');

var volany_iframe = (iframe.contentWindow? iframe.contentWindow.document: iframe.contentDocument);

var spojeni_na_idecko_v_iframu = volany_iframe.getElementById("misto_zobrazeni");

spojeni_na_idecko_v_iframu.innerHTML = 'Text, který bych tam rád zobrazil...';
</script>



Prosím o radu, jak docílit funkčního výsledku, díky všem za radu.
peta
Profil
jakpsatweb - javascript - objekt window, poslednich asi 20 radku

obsah v iframe muzes pry menit jen u sveho vlastniho na svem hostingu.
Cili pokud tam nactes reklamu z adrenaline a pod, tak to pry nejde.

Coz lze obejit pres PHP file, pokud dany hosting tohle dovoli, file(URL)
Nebo timtez file, ale stranku trosku nesikovne nactes do iframe a ulozis si ji.
Oboji je dobre podminit na nejaky casovy interval, treba pro kurz. listek csob vyuzivam 3x denne. Tim padem ne pri kazdem zobrazeni stranky se spojuji take s csob.

Funkcni priklad, mnooo, treba:
http://www.volny.cz/peter.mlich/hry.htm
Tusim Mazesmith. Nejsem si ted jist, jestli generuji ted cely iframe nebo jen menim obsah. Kazdopadne tech 20 radku z jakpsatweb ti pomuze.
Suta
Profil
peta
Cením snahu, tentokrát jsi mi však bohužel nepomohl. Samozřejmě chci měnit obsah iframe pouze na své doméně a na svém hostingu, žádné "cizí" monstra typu ankety aj. rozhodně nenačítám.

jakpsatweb - javascript - objekt window, poslednich asi 20 radku - procházel jsem již včera, bohužel jsem nesestrojil nic funkčního

rovněž jsem procházel všechny souvísející debaty tady na diskuzi, v několika se tu podobný případ řeší, ovšem opět jsem z toho moc fungujícího nepochytil..

Takže: jak se tedy z hlavní stránky dostanu ke změně obsahu divu s id v iframu? (tedy soubor načítaný z hlavní stránky do iframu má někde uprostřed svého kódu třeba <div id="tento"></div> a já do něj chci z hlavního souboru javascriptem něco zapsat...)
mila
Profil
id_iframu.document.getElementById("misto_zobrazeni").innerHTML = ...


Bacha na to, že iframe nemusí být (a asi nebude) ještě načten, tzn. tam ani nebude ten element, co chceš upravit. Musíš na něj počkat - window.onload / window.setInterval / http://www.thefutureoftheweb.com/blog/adddomloadevent
Suta
Profil
mila
Mám to tedy chápat tak, že mnou uvedený příklad v úplně prvním příspěvku je funkční, pouze je třeba pohlídat, aby se zápis javascriptem do iframu uskutečnil až po načtení daného iframu?
mila
Profil
Popravdě jsem na ten příklad moc nekoukal, ale zdá se, že má hlavu a patu a mohl by fungovat...

Mimochodem, nainstaluj si firebug http://www.getfirebug.com/ - na ladění podobných problémů je neocenitelný.
Suta
Profil
Tak sláva, přece jen jsem po dvou dnech vzteků a testování přišel na chybu, bohužel, velmi banální... V mém prvním příspěvku:

místo volany_iframe.getElementById("misto_zobrazeni");
mělo být volany_iframe.document.getElementById("misto_zobrazeni");

Ach jo.
Takže pro všechny, kdo budou příště hledat způsob, jak se dostat k id načítaného iframe:


//soubor index.php
<html>
<body>
...
<iframe id="idecko_iframu" src="stranka_nacitana_do_iframu.php" width="...atd.">

<script>

var iframe = document.getElementById('id_iframu');

var volany_iframe = (iframe.contentWindow? iframe.contentWindow.document: iframe.contentDocument);

var spojeni_na_idecko_v_iframu = volany_iframe.document.getElementById("id_volaneho_divu");

spojeni_na_idecko_v_iframu.innerHTML = 'Text, který tam chci zapsat...';

</script>
...
</body>
</html>


// a soubor stranka_nacitana_do_iframu.php
<html>
<body>

<div id="id_volaneho_divu">
</div>

</body>
</html>


Díky všem.
Pavel W.
Profil *
pomóc já ten způsob stále hledám...
tedy méně dramaticky mi to nefunguje:
<html>
<body>
...
<iframe id="idecko_iframu" src="iframe.html"></iframe>
<script type="text/javascript">
function delej() {
var iframe = document.getElementById("idecko_iframu");
var volany_iframe = (iframe.contentWindow? iframe.contentWindow.document: iframe.contentDocument); //tuhle část nechápu, ale co se dá dělat
var spojeni_na_idecko_v_iframu = volany_iframe.document.getElementById("id_volaneho_divu");
spojeni_na_idecko_v_iframu.innerHTML = "Text, který tam chci zapsat...";
}
</script>
...
<a href="#" onclick="delej(); return false">delej</a>
</body>
</html>

trochu jsem upravil 1. (index) soubor, abych zajistil, že obsah už bude načtený, ale stejně se nedostanu k objektu v iframe
2. soubor je stejný, akorát jsem ho přejmenoval na iframe.html, aby to šlo testovat i offline
chybu že není objekt mi to vypisuje na řádku: var spojeni_na_idecko_v_iframu...
pomůže prosím někdo?

Vaše odpověď

Mohlo by se hodit

Neumíte-li správně určit příčinu chyby, vkládejte odkazy na živé ukázky.
Užíváte-li nějakou cizí knihovnu, ukažte odpovídajícím, kde jste ji vzali.

Užitečné odkazy:

Odkud se sem odkazuje


Prosím používejte diakritiku a interpunkci.

Ochrana proti spamu. Napište prosím číslo dvě-sta čtyřicet-sedm: