caja de lujo trabajo con iframes en beforeShow función?

Estoy tratando de establecer dinámicamente algunos valores de mi objeto Fancybox en función de la información almacenada en las tags dentro de un iframe que se está cargando el cuadro de fantasía. el problema es que el único momento en el que puedo obtener los valores CORRECTOS del contenido (iv intenté prácticamente todos los combo de callback posibles) está en el método afterShow. esto provoca una transición brusca del ancho y la altura que se restablecen después de que se muestra.

 $ ('. fancybox'). fancybox ({openEffect: 'elastic', closeEffect: 'elástico', autoSize: true, afterShow: function () {var fantascy = this; var h = $ ('. fancybox-iframe') .contents (). find ('html'). height (); var w = $ ('. fancybox-iframe'). contents (). find ('html'). width (); fancy.width = w; fancy.height = (h + 50);}}); 

nada fuera del método afterShow me da resultados correctos, incluso beforeShow (que es lo que estoy buscando). ¿Hay algún combo callback / jquery que pueda lograr esto antes de mostrar la caja elegante? ¡Gracias!

También puede usar la opción de callback beforeShow , pero es posible que deba cancelar todas las transiciones (establezca nextSpeed y prevSpeed en 0 ).

La velocidad de transición parece estar creando el efecto de salto usando la afterShow llamada afterShow o evitando obtener el valor correcto usando la beforeShow llamada beforeShow .

También es posible que debas actualizar a la versión de fancybox v2.0.6.

Además, también podría simplificar su secuencia de comandos sin usar variables externas como:

 $(document).ready(function() { $("a.fancybox").fancybox({ openEffect : 'elastic', closeEffect : 'elastic', fitToView: false, nextSpeed: 0, //important prevSpeed: 0, //important beforeShow: function(){ // added 50px to avoid scrollbars inside fancybox this.width = ($('.fancybox-iframe').contents().find('html').width())+50; this.height = ($('.fancybox-iframe').contents().find('html').height())+50; } }); // fancybox }); // ready 

Ver DEMO aquí