iFrame in overlay a centro pagina

  • Creatore Discussione Creatore Discussione obZen
  • Data di inizio Data di inizio

obZen

Nuovo Utente
12 Nov 2014
4
0
0
Ciao ragazzi!
Ho provato lo script descritto in questa guida:
https://www.mrw.it/jquery/iframe-overlay-centrato-schermo_11528.html

Funziona tutto a meraviglia ma vorrei che si aprisse tramite un link e che ogni link apra il proprio iframe (in pratica ho un elenco di nomi ricavato dal database ed ognuno di questi deve aprire il suo relativo iframe). Non sono pratico di Javascript, ho provato a modificare lo script:

Questo è quello originale (si apre automaticamente al caricamento della pagina):
Script:
Codice:
$(document).ready(function(){
    $("#mrw_overlay").fadeIn(500);
    $("#mrw_box").fadeIn(500);
    $("#mrw_close").click(function(){
        $("#mrw_box").fadeOut(500);
        $("#mrw_overlay").fadeOut(500);
    });
});
HTML:
HTML:
         <div id="mrw_overlay"></div><div id="mrw_box"><div id="mrw_close"><img src="images/img_close.png"></div>
  		 <iframe src="scheda.asp" width="950" height="630" marginwidth="0" marginheight="0" frameborder="0" scrolling="auto" allowtransparency="true"></iframe>
		 </div>

Lo script, l'ho modificato così:
Codice:
function clicca(){
    $("#mrw_overlay").fadeIn(500);
    $("#mrw_box").fadeIn(500);
    $("#mrw_close").click(function(){
        $("#mrw_box").fadeOut(500);
        $("#mrw_overlay").fadeOut(500);
    });
}
Richiamato con href="javascript:clicca()" dalla mia pagina.

Fin qui funziona bene ma non riesco a passargli la variabile in modo che ogni link dell'elenco apra il suo iframe.
Ho provato con:
Codice:
function clicca(nomeiframe){
    $(nomeiframe).fadeIn(500);
    $("#mrw_box").fadeIn(500);
    $("#mrw_close").click(function(){
        $("#mrw_box").fadeOut(500);
        $(nomeiframe).fadeOut(500);
    });
}
Richiamato con href="javascript:clicca('#mrw_overlay1')" dalla mia pagina, ma non funziona.

Dove sbaglio?
 
Ciao, non puoi assegnare lo stesso id a più di un elemento altrimenti lo script va in errore.
Hai creato tanti div overlay quanti sono i link che vuoi far aprire ?
potresti passare un numero alla funzione e concatenarlo con il nome dell'id
HTML:
<a href="javascript:clicca(1)">1</a>
        <a href="javascript:clicca(2)">2</a>
        <a href="javascript:clicca(3)">3</a>
la function diventerebbe cosi
Codice:
function clicca(iframe){
                $("#mrw_overlay_" + iframe).fadeIn(500);
                $("#mrw_box_" + iframe).fadeIn(500);
                $("#mrw_close_" + iframe).click(function(){
                    $("#mrw_box_" + iframe).fadeOut(500);
                    $("#mrw_overlay_" + iframe).fadeOut(500);
                });
            }
 
Perfetto! Funziona alla grande ed è proprio quello che avevo in testa. Putroppo però ho notato che non posso usare questo tipo di script per la mia pagina perchè dovendo "pre-caricare" tutti gli iframe la pagina diventa lentissima! Arrivo ad avere 10 o 20 record stampati a video e per ognuno dovrebbe corrispondere un'iframe.
Conosci per caso uno script che mi permetta di aprire in overlay (allo stesso modo dello script precedente) una pagina nella quale visualizzo i dati in base alla querystring che le ho inviato?
 
Potresti passare come parametro la pagina da aprire nell'iframe
Codice:
<a href="javascript:clicca('scheda.asp?id=1')">1</a>
<a href="javascript:clicca('scheda.asp?id=2')">2</a>
prima di mostrare l'iframe gli cambi il src con jquery
Codice:
function clicca(pagina){
     $("#mrw_overlay").attr("src",pagina);
     $("#mrw_overlay").fadeIn(500);
 
Ultima modifica:
Non passa la pagina...parte l'overlay ma vuoto, senza che abbia caricato nessuna pagina..
 
devi indicare il percorso giusto del iframe
dovrebbe essere dentro mrw_box
Codice:
$("#mrw_box iframe").attr("src", pagina);
 

Discussioni simili