Ciao posso chiedere gentilmente il vostro aiuto?
Non riesco a risolvere il mio problema.
Ho bisogno di scrivere del codice javascript che, dato un iframe inserito in una pagina main, vada a leggere e/o scrivere in uno span di tale iframe.
Ho scritto il seguente codice:
Pagina main.html:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<script type="text/javascript">
function riscrivi_valore()
{
var ifrm = document.getElementById('mio_frame');
ifrm.contentWindow.document.getElementById('valore _in_frame').innerHTML = 'VALORE SOVRASCRITTO';
}
</script>
</head>
<body>
<iframe id="mio_frame" border="1" src="mio_frame.html" frameborder="yes" ></iframe>
<input type='button' value='Scrivi in iframe' onclick='riscrivi_valore();'>
</body>
</html>
---------------
Pagina mio_frame.html
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
</head>
<body>
Valore: <span id='valore_in_frame'>000</span>
</body>
</html>
Questo codice funziona soltanto se la funzione viene lanciata dal button con onclick.
Io invece vorrei fare in modo che la pagina, dopo aver creato l'iframe passi immediatamente alla lettura/scrittura del suo contenuto nell'innerHTML, senza dover cliccare bottoni. Ho quindi sostituito la riga del button con un banale richiamo di funzione:
<script type="text/javascript">riscrivi_valore();</script>
Scritto cosi' funziona soltanto se prima di questa riga aggiungo un alert o ritardo l'esecuzione della funzione di circa 200ms:
<script type="text/javascript">alert ("Quello che voglio");</script>
oppure:
<script type="text/javascript">
var date = new Date();
var curDate = null;
do { curDate = new Date(); }
while(curDate-date < 200);
</script>
Deduco che il problema e' legato ai tempi necessari per la creazione dell'iframe.
Stesso comportamento in IE7 e FF3.5.3.
E' possibile fare in modo di richiamare la funzione solo quando lo span dell'iframe diventa disponibile senza cablare ritardi prefissati? Questa operazione andra' fatta su un nuimero variabile di iframe, quindi ritardare anche solo di 200ms l'esecuzione su ogni iframe potrebbe non essere una buona soluzione perche' l'ultimo frame verrebbe letto/scritto dopo un tempo molto lungo.
Grazie infinite in anticipo.