2011-03-22 21 views
6

En mi sitio, abro un fancybox que contiene contenido IFRAME. ¿Es posible actualizar el tamaño de la fancybox cuando se hace clic en un enlace dentro de ella?Fancybox: ¿se está actualizando el tamaño de fancybox con contenido Iframe?

Por ejemplo, tengo configurado el ancho de 535px inicialmente, cuando se hace clic en un enlace específico, me gustaría que la fancybox cambie el tamaño a 900px de ancho.

¿Alguna idea de cómo puedo lograr esto?

Gracias!

Respuesta

18

Creo que sólo tengo el mismo problema y en mi caso, fancybox.resize no funcionaba, pero esto funcionó para mí:

$("#lightbox").fancybox({ 
    'hideOnContentClick' : true, 
    'width' : 500, 
    'type' : 'iframe', 
    'padding' : 35, 
    'onComplete' : function() { 
    $('#fancybox-frame').load(function() { // wait for frame to load and then gets it's height 
     $('#fancybox-content').height($(this).contents().find('body').height()+30); 
    }); 
    } 
});

crédito a Ian Hoar a la publicación que aquí: http://www.ianhoar.com/2011/08/25/jquery-and-fancybox-how-to-automatically-set-the-height-of-an-iframe-lightbox/

+10

FancyBox v2-version: \t \t '\t \t $ ('FancyBox.') FancyBox ({ \t \t \t tipo:. 'Iframe', \t \t \t aftershow:. function() { \t \t \t \t $ ('FancyBox-iframe') carga (function() { \t \t \t \t \t $ ('. Fancybox-inner'). Height ($ (this) .contents(). Find ('body'). Height() + 30); \t \t \t \t}); \t \t \t} \t \t}); ' –

+0

@AdrianvanVliet ¿Dónde puedo agregar este código para el plugin de WordPress de Fancy Box? –

0
$('a', $('#youriframeID').contentDocument).bind('click', function() { 
    preventDefault(); 
    $('#yourIframeID').attr('src', $(this).attr('href')); 
    $('#yourIframeID').load(function() { 
     $.fancybox.resize; 
    }); 
}); 

Si se hace clic en una 'a' dentro de su iframe, los eventos predeterminados se bloquearán. En cambio, cambiamos el src de su iframe. Cuando está cargado, # .fancybox.resize cambiará automáticamente el tamaño de la fancybox con respecto al contenido. Esta es una idea, por lo que el código probablemente aún no funcione. Solo para ayudarlo a ponerse en el camino correcto.

3

para aquellos que vienen aquí usando FancyBox 2:

Este es el código que funcionó para mí

$(".iframe").fancybox({ 
        autoSize: false, 
        autoDimensions: false, 
        width: 630, 
        height: 425, 
        fitToView: false, 
        padding: 0, 
        title: this.title, 
        href: $(this).attr('href'), 
        type: 'iframe' 
       }); 
+0

configurar la altura y el ancho funcionó para mí, incluso con autoSize: verdadero – obie

-1

Esto funciona para mí en FancyBox v2.1.4

$('#myid').fancybox({ 
    closeBtn : false, 
    padding  : 0, 
    preload  : true, 
    onUpdate : function(){ 
     $.fancybox.update(); 
    } 
}); 
+3

Al agregar '$ .fancybox.update()' al controlador de eventos 'onUpdate' se producirá un bucle infinito que devorará su CPU. Aquí hay un experimento, agregue una línea arriba de 'console.log (" update triggered ");' luego use la consola del navegador para ver cuántas veces se está llamando ... – Lankymart

Cuestiones relacionadas