2011-01-06 25 views
12

Tengo tal problema. Necesito abrir iframe en fancybox (necesito iframe porque necesito navegar a través de enlaces en documento abierto y permanecer en fancybox), pero quiero poner contenido en iframe desde variable, no a través del atributo src (ya lo hice obtuve contenido por AJAX (tengo que hacer algunas comprobaciones sobre el contenido antes de ponerlo en iframe, por lo que no hay forma de hacerlo en lugar de la consulta AJAX), así que no necesito una consulta más).jQuery agregar iFrame con contenido

Fancybox no permite utilizar el atributo 'contenido' con 'tipo': 'iframe'. Así que decidí crear iframe dinámicamente, insertar mi contenido en él, y mostrar iframe por fancybox como un bloque regular.

Es como

jQuery('<iframe id="someId"/>').appendTo('body').contents().find('body').append(content); 

Y que

jQuery('<iframe id="someId"/>').fancybox(); 

Pero la primera parte no funcionan. Puedo ver el iframe que se agregó a la página pero sin ningún contenido (tengo una página html completa en contenido variable, pero cuando intento agregar solo un texto, no funciona tan bien).

¿Qué he hecho mal? ¿Tal vez hay otra manera de hacer lo que necesito?

¡Gracias por su asesoramiento!

+0

tenía el mismo problema, ¿podría por favor dígame si usted fijó el problema anterior @krasilich –

Respuesta

3

¿Qué pasa si se divide la línea en dos:

jQuery('<iframe id="someId"/>').appendTo('body'); 
jQuery('#someId').contents().find('body').append(content); 

luego cambia de selector para ser correcta, antes de que se estaba creando un nuevo marco flotante, no insertarlo en el DOM y el FancyBox llamada en él, sin embargo, esto debería funcionar:

jQuery('#someId').fancybox(); 
+0

puedo ver iframe vacía en el fondo de mi página. Puse contenido en texto simple (var content = 'Text in Iframe'). Y no hay errores en Firebug. El cuerpo del elemento en iFrame está vacío – krasilich

+0

@krasilich ¿Has probado el código que sugerí? He editado mi respuesta con un nuevo descubrimiento. –

+0

var content = 'Texto en iframe'; jQuery ('