2012-08-04 12 views
11

Tanto la ventana principal como el iframe están en el mismo dominio, pero lo que quiero lograr es cambiar el tamaño del iframe para que se ajuste a su contenido usando js solo dentro de ese iframe.¿es posible que iframe cambie el tamaño sin ayuda de la ventana principal?

Tampoco conozco la identificación del iframe asignado por la ventana principal. Y no quiero usar jquery ni ningún otro marco para eso.

Respuesta

12

Esto se puede hacer también sin conocer la id del iframe en la ventana padre:

window.frameElement.style.width = iframeContentWidth + 'px'; 
window.frameElement.style.height = iframeContentHeight + 'px'; 

Ver frameElement en MDN.

EDITAR

Por si las iframe pasa a ser en un elemento contenedor que se ha fijado el tamaño y overflow: hidden se puede hacer algo como esto:

function resizeIframe (iframeContentWidth, iframeContentHeight) { 
    var container = window.frameElement.parentElement; 
    if (container != parent.document.body) { 
     container.style.width = iframeContentWidth + 'px'; 
     container.style.height = iframeContentHeight + 'px'; 
    } 
    window.frameElement.style.width = iframeContentWidth + 'px'; 
    window.frameElement.style.height = iframeContentHeight + 'px'; 
    return; 
} 
0

Para contenido del mismo origen como el suyo, yes you can.

tomar prestado de la respuesta de Gary en la pregunta anterior:

En el marco flotante, window.parent se refiere al objeto global del documento de nivel superior , no el propio documento objeto. Creo que tendría que uso parent.document.getElementById

intente acceder al iframe usando parent.document, a ver si así se resuelve el problema.

0

Asumiendo que tiene sólo el 1 IFRAME en la ventana principal, desde el Javascript del documento de IFRAME puede hacer algo como:

function getMySelf() 
{ 
    return (window.parent.document.getElementsByTagName("iframe"))[0]; 
} 

var myself = getMySelf(); 
myself.style.width = whateverWidth; 
myself.style.height = whateverHeight; 
Cuestiones relacionadas