2010-11-07 10 views
16

¿Es posible usar jQuery para crear un elemento y anexarle contenido html sin tener el atributo src especificado?Cree un elemento <iframe> y anexe contenido html con jQuery

El problema es que necesito crear un iframe y ya tengo su contenido (lo obtengo como respuesta AJAX). Lamentablemente, no puedo especificar la URL de la que recibo respuesta como atributo src. Me gustaría hacer algo como:

$('<iframe id="someId"/>').append(response).appendTo("#someDiv"); 

Respuesta

34

Prueba esto:

$('<iframe id="someId"/>').appendTo('#someDiv') 
          .contents().find('body').append(response); 
+2

¿Se puede agregar el contenido al iframe antes de agregarlo al dom? Porque eso sería INCREÍBLE. Un millón de upvotes para eso si pudiera :) – dezman

2

¿Por qué utilizar un iframe, entonces? Pegar todo en otro contenedor. No puedo pensar en ninguna ventaja del iframe, excepto que puede cargar una página desde un atributo src.

Supongo que si necesita un iframe para otro propósito, como cargar en una página pero desea reemplazarlo con la respuesta ajax, puede usar jQuery para cambiar el iframe por un div y viceversa según sea necesario .

La otra posibilidad es que en lugar de ajax, modifique su script ajax php para generar la página completa que desea en el iframe. Luego use jQuery para cambiar la dirección de la página solicitada en el iframe con nuevos parámetros para mostrar el contenido actualizado.

+1

me encontré con un caso en el que esto es útil. Mis usuarios querían una forma de imprimir los contenidos de una sección específica de una página altamente dinámica. Al principio, abrí una nueva ventana y canalicé mi contenido a eso, pero el pop-up era hortera. Así que, en cambio, utilicé un iframe vacío al que canalizo el contenido, y luego llamé a window.print sobre el iframe: window.frames ['someId']. Print(); –

+0

Aquí hay otro caso: iframes se utilizan para superponer controles ActiveX en IE, que de lo contrario están por encima de cualquier otro elemento. Pero si hay algún tipo de control de acceso personalizado, la única manera de hacerlo es seguir el procedimiento en la respuesta correcta. – malber

+0

Si desea informar un error AJAX y el error vuelve como una página HTML, es más fácil (y probablemente lo mejor) incluir toda la respuesta de error en un iframe. – mhenry1384

Cuestiones relacionadas