Cómo evitar que un iframe se vuelva a cargar al moverlo en el DOM


Tengo un iframe cargado con algún contenido. Me gustaría moverlo dentro del DOM sin causar una actualización (me gusta el contenido dentro de él, quiero mantenerlo).

Estoy haciendo algo básico node.appendChild(iframe) para hacer el trabajo.

¿Es eso posible?

Gracias de antemano por su ayuda.

Author: Savageman, 2011-09-15

4 answers

Si está tratando de moverlo visualmente, puede intentar modificar el CSS para usar el posicionamiento absoluto o algunos otros ajustes.

Sin embargo, si está tratando de sacarlo del DOM e insertarlo en otro lugar, no podrá evitar una recarga.

 16
Author: John Fisher,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2011-09-15 16:33:24

No lo creo, ya que el navegador va a volver a renderizar/recargar el iframe cuando se vuelva a poner en el DOM.

Http://polisick.com/moveNode.php mejor lo explica.

Para mover un nodo, llama a removeNode para sacarlo del árbol y llevarlo a la memoria, luego appendNode para 'pegarlo' de nuevo donde lo quieras.

 2
Author: Drazisil,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2011-09-15 16:40:33

Tuve un problema similar con un iFrame en un cuadro de diálogo jQueryUI. jQuery mueve el div (que contiene mi iFrame) fuera del DOM y porque todavía quería postbacks (duh), tuve que moverlo de nuevo. Después de leer esto y varios otros mensajes, se me ocurrió una solución.

La idea simple que noté es que el iFrame se recarga cuando se mueve. Por lo tanto, agregué el iFrame en el contenedor de diálogo (div) después de mover el div de nuevo en el DOM. Esto funciona porque a jQuery no le importa sobre lo que hay en el contenedor. Aquí hay un código de ejemplo:

Diálogo abrir/cerrar funciones:

Abierto:

function () {
    $(this).parent().appendTo("form").css("z-index", "9000"); //Move the div first
    $(this).append('<iframe id="iFrame" allowtransparency="true" frameborder="0" width="100%" height="100%" src="somePage.aspx"></iframe>');}, //then add the iframe
}

Cerrar:

function() {
    $(this).empty(); //clear the iframe out because it is added on open, 
    //if you don't clear it out, you will get multiple posts
    $(this).parent().appendTo("divHidden"); //move the dialog div back (good house-keeping)
}

Html:

<div id="divHidden" style="display: none">
    <div id="dialog" style="display: none">
    </div>
</div>
 -2
Author: user3334255,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2014-07-09 20:56:10

Necesita guardar el nodo' Html ' bajo el iframe y después de mover el iframe, agregarlo de nuevo

 -4
Author: dekely,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2013-11-05 08:11:38