Cos'è ElectroYou | Login Iscriviti

ElectroYou - la comunità dei professionisti del mondo elettrico

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

Linguaggi e sistemi

Moderatori: Foto UtentePaolino, Foto Utentefairyvilje

0
voti

[1] Impostare la visibilità/invisibilita di un iFrame da ....

Messaggioda Foto Utentefreccia1956 » 3 gen 2015, 17:37

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.
Ultima modifica di Foto Utentespud il 4 gen 2015, 23:51, modificato 2 volte in totale.
Motivazione: aggiunti i tag per il codice
Avatar utente
Foto Utentefreccia1956
16 4
New entry
New entry
 
Messaggi: 50
Iscritto il: 11 apr 2011, 22:26

1
voti

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

Messaggioda Foto Utentesimo85 » 3 gen 2015, 17:41

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_/
Avatar utente
Foto Utentesimo85
30,9k 7 12 13
Disattivato su sua richiesta
 
Messaggi: 9927
Iscritto il: 30 ago 2010, 4:59

0
voti

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

Messaggioda Foto Utentefreccia1956 » 3 gen 2015, 18:26

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 ?
Avatar utente
Foto Utentefreccia1956
16 4
New entry
New entry
 
Messaggi: 50
Iscritto il: 11 apr 2011, 22:26

0
voti

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

Messaggioda Foto Utenteangus » 3 gen 2015, 23:48

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?
in /dev/null no one can hear you scream
Avatar utente
Foto Utenteangus
8.475 4 6 9
G.Master EY
G.Master EY
 
Messaggi: 4168
Iscritto il: 20 giu 2008, 17:25

0
voti

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

Messaggioda Foto Utentefreccia1956 » 4 gen 2015, 1:06

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.
Avatar utente
Foto Utentefreccia1956
16 4
New entry
New entry
 
Messaggi: 50
Iscritto il: 11 apr 2011, 22:26

3
voti

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

Messaggioda Foto Utenteangus » 4 gen 2015, 1:13

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>
in /dev/null no one can hear you scream
Avatar utente
Foto Utenteangus
8.475 4 6 9
G.Master EY
G.Master EY
 
Messaggi: 4168
Iscritto il: 20 giu 2008, 17:25

4
voti

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

Messaggioda Foto Utenteangus » 4 gen 2015, 2:35

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.
in /dev/null no one can hear you scream
Avatar utente
Foto Utenteangus
8.475 4 6 9
G.Master EY
G.Master EY
 
Messaggi: 4168
Iscritto il: 20 giu 2008, 17:25

0
voti

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

Messaggioda Foto Utentefreccia1956 » 4 gen 2015, 21:23

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.
Avatar utente
Foto Utentefreccia1956
16 4
New entry
New entry
 
Messaggi: 50
Iscritto il: 11 apr 2011, 22:26

0
voti

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

Messaggioda Foto Utentefreccia1956 » 4 gen 2015, 23:45

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.
Avatar utente
Foto Utentefreccia1956
16 4
New entry
New entry
 
Messaggi: 50
Iscritto il: 11 apr 2011, 22:26

1
voti

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

Messaggioda Foto Utenteangus » 10 gen 2015, 0:34

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
in /dev/null no one can hear you scream
Avatar utente
Foto Utenteangus
8.475 4 6 9
G.Master EY
G.Master EY
 
Messaggi: 4168
Iscritto il: 20 giu 2008, 17:25

Prossimo

Torna a PC e informatica

Chi c’è in linea

Visitano il forum: Nessuno e 60 ospiti