2011-02-23 15 views
5

primera publicación - ¡Hola! Yo uso fancybox (Fancybox homepage) para mostrar las ventanas modales. Estoy tratando de mostrar un div oculto con un iFrame dentro de este div. Funciona genial. La segunda vez que hace clic en el enlace, no carga el iFrame (no es un error 404, simplemente no hay contenido en el iFrame). ¿Alguien puede ayudar?Caja de fantasía que no se abre iFrame segunda vez

Las partes importantes:

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

Y el HTML:

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

la caja de lujo está trabajando, es un problema ur url :) que hacer u llaman la 'openIframeLink()' sólo necesita caja de lujo por cierto una vez (creo) – Val

Respuesta

3

Parece que FancyBox extrae el elemento iframe del DOM y lo pone en su propio contenedor. Luego, cuando cierras la fancybox, intenta insertarla nuevamente donde estaba originalmente, pero logra perder el valor de atributo src.

El método aprobado por el chico fancybox para abrir un iframe parece ser el siguiente.

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

Una forma de evitarlo, es clonar el elemento de marco flotante, es decir

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

Obviamente no es ideal .. Me encantaría escuchar a alguien carillón más familiar en.

+0

¡Hola! Muchas gracias. No hizo exactamente lo que yo quería (probablemente es mi culpa) pero me mostraste lo suficiente para solucionar el problema. 'function openIframeLink() { \t/* Coge el src antes de que fancybox lo pierda */ \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}); }; '- ¡muchas gracias! – Djave

4

tenido este el mismo problema. Basado en la evaluación de Frode que estaba desnudando el atributo src, añadí la devolución de llamada 'onClosed' en mi llamada FancyBox y fue capaz de volver a agregarlo en:

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

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

FancyBox pierde el atributo src. Aquí es una solución que he estado usando desde entonces

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

Esta es mi manera de recuperar el atributo src, sin saber el elemento de antemano.

Podría ayudar a alguien ..

$(".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); 
     } 
    }); 
}); 
Cuestiones relacionadas