freccia1956 ha scritto:In altre parole all' evento onLoad del page1 devo assegnare una funzione che deve rendere visibile un iFrame che non è un oggetto locale ma un oggetto che si trova sulla Home page.
Se proprio vuoi fare queste cose brutte
puoi riferirti alla pagina che contiene l'iframe usando
parent (prima di document)
questa è index.html
- Codice: Seleziona tutto
<!DOCTYPE html>
<html>
<head>
<title>Index</title>
<script type="text/javascript">
function Bar(){
document.getElementById('frame1').src='page1.html';
}
</script>
</head>
<body>
<h1>Pagina index</h1>
<div name=menu>
<button id="button1" onclick="Bar()">foo</button>
</div>
<iframe id="frame1" src="page2.html"></iframe>
<iframe id="frame2" src="page3.html" style="display:none"></iframe>
</body>
</html>
questa è page1.html
- Codice: Seleziona tutto
<!DOCTYPE html>
<html>
<head>
<title>page 1</title>
<script type="text/javascript">
function CoseBrutte(){
parent.document.getElementById('frame2').style.display='inline';
}
</script>
</head>
<body onload="CoseBrutte()">
<h1>Page 1</h1>
</body>
</html>
Attenzione però che quanto sopra non è cross-domain! E alcuni browser, in certe condizioni, potrebbero non gradirlo nemmeno all'interno dello stesso dominio.
(ho fatto una prova in LOCALE e con FF funziona, mentre con CHROME con le impostazioni di default no, bisogna avviarlo con
--allow-file-access-from-files e
--disable-web-security. Nessun problema caricando i file sul webserver)
Non è mai bello che il contenuto di un iframe, metta il naso nel DOM della pagina che lo contiene (anche se volendo è possibile farlo... e si fa)

Aggiungo che in HTML5 è possibile usare l'attributo "sandbox" per controllare in modo granulare cosa è permesso all'iframe e cosa no.