Pagina 1 di 2

Impostare la visibilità/invisibilita di un iFrame da ....

MessaggioInviato: 3 gen 2015, 17:37
da freccia1956
Devo impostare la visibilità\invisibilità di un iFrame residente nella pagina index da una o più pagine Html facenti parte dello stesso progetto web, ma non riesco a scrivere nel modo corretto la funzione che nell'evento onLoad della pagina1 renda visibile il frame ( residente nella pagina principale Index) che deve contenerla.

Codice: Seleziona tutto
function ShowFrame()
{
   document.getElementById(" ? ? ?").value = "hidden"
}

Immagino che sia necessario fornire il riferimento delle pagine, ma non sono riuscito a trovare nulla in merito.

Grazie.

Re: Impostare la visibilità/invisibilita di un iFrame da ...

MessaggioInviato: 3 gen 2015, 17:41
da simo85
L'argomento della funzione getElementById deve essere l'identificatore di un tag HTML (o come si chiamano :-) ).

Supponi di avere un button:

Codice: Seleziona tutto
<button id="myButton" type="button">Click Me!</button>


E che si voglia cambiare il valore di questo button. Allora:

Codice: Seleziona tutto
function ShowFrame()
{
   document.getElementById('myButton').value = <value>
}


O_/

Re: Impostare la visibilità/invisibilita di un iFrame da ...

MessaggioInviato: 3 gen 2015, 18:26
da freccia1956
Quello che mi hai suggerito lo avevo gia fatto ma non funziona perché la funzione e il frame risiedono in pagine diverse. Quale riferimento dare all oggetto iframe per dire che lo stesso trovasi in un'altra pagina html ?

Re: Impostare la visibilità/invisibilita di un iFrame da ...

MessaggioInviato: 3 gen 2015, 23:48
da angus
Io un po' mi sono perso.
Foto Utentefreccia1956 puoi spiegare quale problema stai tentanto di risolvere? Magari allegando il codice (semplificato) della pagina index? cosa ci andrà nell'iframe?

Re: Impostare la visibilità/invisibilita di un iFrame da ...

MessaggioInviato: 4 gen 2015, 1:06
da freccia1956
Ok, cercherò di spiegarmi meglio


Il progetto è costituito da 4 pagine di cui la prima è l' index e le altre tre sono page1, page2, page3

Nella pagina principale ' index ' ovvero nella Home page, ci stanno la barra del menù e due inlineFrame , iFrame1 e iFrame2

All' apertura della pagina principale, iFrame1 deve visualizzare il contenuto di page2 mentre iFrame2 a cui è assegnato il contenuto di page3 deve essere invisibile. Fin qui tutto funziona.

Il problema mi sorge nel momento in cui attraverso il pushButton del menù carico nell' iFrame1 la page1 e contemporaneamente l' iFrame2 deve essere reso visibile per visualizzare il contenuto di page3.

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.

Re: Impostare la visibilità/invisibilita di un iFrame da ...

MessaggioInviato: 4 gen 2015, 1:13
da angus
però non hai risposto alle mie domande... :roll:
ho come l'impressione che tu stia usando "male" gli iframe...

In ogni caso, rileggendo quello che hai scritto sopra, se proprio volessi farlo (ma non lo farei mai :mrgreen: )
Senza complicarmi la vita con un onLoad() di page1.html per rendere visibile un iframe in index, farei così:
Codice: Seleziona tutto
<!DOCTYPE html>
<html>
<head>
  <title>Index</title>
  <script type="text/javascript">
  function Bar(){
    document.getElementById('frame1').src='page1.html';
    document.getElementById('frame2').style.display='inline';
  }
  </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>

Re: Impostare la visibilità/invisibilita di un iFrame da ...

MessaggioInviato: 4 gen 2015, 2:35
da angus
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 :mrgreen:
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.

Re: Impostare la visibilità/invisibilita di un iFrame da ...

MessaggioInviato: 4 gen 2015, 21:23
da freccia1956
Non sono un professionista e pertanto ciò che faccio sono soltanto delle prove, una specie di approccio al linguaggio HTML e alla realizzazione di pagine web. Non importa se belle o brutte, ciò che importa è aver imparato qualcosa.

Grazie mi sei stato di grande aiuto.

Re: Impostare la visibilità/invisibilita di un iFrame da ...

MessaggioInviato: 4 gen 2015, 23:45
da freccia1956
Un ultima domanda :oops:

ho questa funzione scritta in un file Source.js

Codice: Seleziona tutto
function prova()
{
   document.getElementById("Editbox1").value=33   
   document.getElementById("Editbox3").value=44   
}

Quando viene chiamata dall'evento click di un pulsante presente in page1 deve scrivere il valore 33 nell'Editbox1 che trovasi in page1 e il valore 44 sull' Editbox3 che trovasi in page3.
Chiaramente funziona solo con Editbox1; e allora come faccio a far capire che Editbox3 si trova su una pagina diversa ?. Il mio browser è Chrome.

Re: Impostare la visibilità/invisibilita di un iFrame da ...

MessaggioInviato: 10 gen 2015, 0:34
da angus
Due avvisi:
1. Secondo me, come già detto sopra, questo uso degli iframe è un po' snaturalizzato.
2. Per i motivi spiegati sopra, questo modo di procedere funziona solo all'interno dello stesso dominio e solo con particolari configurazioni delle impostazioni di sicurezza del browser.

Detto questo, partendo dall'ipotesi di avere una pagina index.html che contiene 2 iframe:

index.html
Codice: Seleziona tutto
<!DOCTYPE html>
<html>
<head>
  <title>Index</title>
</head>
<body>
  <h1>Pagina index</h1>
    <iframe id="frame1" src="page1.html"></iframe>
    <iframe id="frame2" src="page3.html"></iframe>
</body>
</html>

Se vuoi accedere ad un elemento del frame2 (page3.html) dall'interno di frame1(page1.html)
puoi fare in questo modo (recuperando il tuo esempio):

page1.html
Codice: Seleziona tutto
<!DOCTYPE html>
<html>
<head>
  <title>page 1</title>
  <script type="text/javascript">
  function prova() {
   document.getElementById("Editbox1").value=33;
   top.document.getElementById("frame2").contentWindow.document.getElementById("Editbox3").value=44;
  }
  </script>
</head>
<body>
  <h1>Page 1</h1>
  <button onclick="prova()">Valori</button>
  <input id="Editbox1"/>
</body>
</html>


page3.html
Codice: Seleziona tutto
<!DOCTYPE html>
<html>
<head>
  <title>page 3</title>
</head>
<body>
  <h1>Page 3</h1>
  <input id="Editbox3"/>
</body>
</html>


Se vuoi fare pratica con l'HTML, il mio consiglio è (per il momento) lascia perdere gli iframe.
(sta seguendo una guida? un testo? un tutorial? un sito?)

Saluti