2011-02-23 12 views
5

primo post - Ciao! Uso fancybox (Fancybox homepage) per visualizzare finestre modali. Sto cercando di visualizzare un div nascosto con un iFrame all'interno di questo div. Funziona alla grande. La seconda volta che fai clic sul link, non carica l'iFrame (non è un errore 404, ma non c'è contenuto nell'iFrame). Qualcuno può aiutare?Fancy box not opening iFrame second time

I bit importanti:

<script type="text/javascript"> 
function openIframeLink() { 
    $.fancybox({ 
     'type'   : 'inline', 
     'href'   : '#data' 
    }); 
}; 
</script> 

E il codice HTML:

<div id="hiddenElement"> 
    <iframe id="data" src="frames/frame4.php" width="100%" height="300"></iframe> 
</div> 
+0

la casella fantasia sta lavorando, è un problema con ur URL :) quando do u chiamare il 'openIframeLink()' è sufficiente casella di fantasia, una volta btw (credo) – Val

risposta

3

Sembra fancybox estrae l'elemento iframe dal DOM e lo mette in essa la propria contenitore. Quindi, quando chiudi la fancybox, tenta di reinserirlo dove era in origine, ma riesce a perdere il valore dell'attributo src.

Il metodo approvato per l'apertura di un iframe da parte del ragazzo di fantasia sembra essere il seguente.

<a id="mylink" class="iframe" href="frames/frame4.php">mylink</a> 
<script type="text/javascript"> 
    $("#mylink").fancybox(); 
</script> 

Un modo per aggirarlo, è quello di clonare l'elemento iframe, ovvero

function openIframeLink() { 
    $.fancybox({content: $('#data').clone()}); 
} 

Ovviamente non è l'ideale .. Mi piacerebbe sentire qualcuno carillon più familiare in.

+0

Ciao! Grazie mille. Non ha fatto esattamente quello che volevo (probabilmente è colpa mia) ma mi hai mostrato esattamente il problema. 'function openIframeLink() { \t/* Prendi l'src prima che fancybox lo perda */ \t theSrc = $ (" # data "). Attr ('src'); \t $ .fancybox ({ \t \t 'tipo' \t \t \t: 'inline', \t \t 'href': '#data', \t \t onClosed \t \t: function() { \t \t \t $ ('#data'). attr ('src', theSrc); \t \t} \t}); }; '- grazie mille! – Djave

4

avuto questa stesso problema. Sulla base della valutazione di Frode che è stato spogliando l'attributo src, ho aggiunto il callback 'onClosed' sulla mia chiamata fancybox ed è stato in grado di aggiungere nuovo in:

jQuery('#iframe_element').fancybox({ 
    'onClosed': reloadIframe 
}); 

function reloadIframe() { 
    jQuery('#iframe_element').attr('src','http://example.com'); 
} 
0

Fancybox perde l'attributo src. Qui è una soluzione che ho usato da allora

function openIframeLink() { 
    /* Grab the src before fancybox loses it */ 
    theSrc = $("#data").attr('src'); 
    $.fancybox({ 
     'type'  : 'inline', 
     'href'  : '#data', 
     onClosed  : function() 
     { 
      $('#data').attr('src', theSrc); 
     } 
    }); 
}; 
0

Questo è il mio modo di recuperare l'attributo src, senza conoscere l'elemento in anticipo.

potrebbe aiutare qualcuno ..

$(".fancybox.iframe").each(function(){ 
    var target = $($(this).attr("href")); 
    var src = target.attr("src"); 
    $(this).fancybox({ 
     'type': "inline", 
     'content': target, 
     'onClosed': function(){ 
      target.attr("src", src); 
     } 
    }); 
});