2011-02-09 8 views
8

¿Cómo puedo hacer que la altura de un iframe se ajuste al contenido que contiene? Supongo que calcularía la diferencia entre la altura del contenido y la altura del cuadro flotante (algo que no sé cómo hacer) y lo usaría con un ciclo while para incrementar una variable para usarla como una altura, pero no puedo ajustar mi mira cómo hacer estas cosas en realidad. Antes de preguntar: sí, el contenido en el marco es de mi sitio. No entre dominios.make iframe height fit content

+0

¿Alguien todavía utilizan marcos? – yoda

+6

@yoda quiso decir iframe, y solo las usan compañías insignificantes en la esfera web como Google y Facebook. –

+0

el contenido enmarcado está en su sitio? – Trufa

Respuesta

1

No estoy seguro de por qué desea utilizar un iframe y no un div dinámico lleno, por ejemplo, a través de AJAX, pero:

poner el contenido dentro del marco flotante en un div, a continuación, obtener la altura de la div. Me gustaría sugerir el uso de jQuery, así:

$("#divId").height(); 

Pero si no se puede utilizar jQuery, usted debería ser capaz de utilizar este:

document.getElementById("divId").offsetHeight; 

Entonces que había necesidad de ajustar la altura del iframe a lo que sea que tengas

jquery:

$("#iframeId").height($("#divId").height()); 

js regulares:

document.getElementById("iframeId").style.height = 
document.getElementById("divId").offsetHeight; 
+3

esto no funciona. No puede acceder al div del iframe desde fuera del iframe –

+3

Sin embargo, puede hacer esto: 'document.getElementById (" frameId "). ContentWindow.document.getElementById (" id ")' – JCOC611

+0

@ JCOC611 'document.getElementById ("frameId"). contentWindow.document' tiene prohibido el acceso en estos días, también, hasta donde puedo ver (al menos en FF) – YakovL

0
<iframe id="moo" src="something.html"><iframe> 
<script> 
function onContentChange(){ 
    var NewSize=$('moo').getScrollSize(); 
    $('moo').setStyles({ 
    width: NewSize.x, 
    height: NewSize.y 
    }); 
} 
</script> 

y dentro del somthing.html, en el fondo o proceso de carga hacen algo en las líneas de

window.parent.window.onContentChange() 
+0

Debe ser '' '$ ('# moo')' '' Si esto se supone que es una llamada jquery ... – Guntram

+0

Cuando lo escribí, era un chico mootools. –

0

Renderizar dinámicamente el iframe en javasc ript una vez que el elemento contenedor ("td1") ha sido dibujado.

<script type="text/javascript"> 
    var iframesrc = "@Href("~/about")"; 
    function init() { 
    var vHeight = document.getElementById("td1").offsetHeight; 
    document.getElementById("td1").innerHTML="<iframe style=\"width:100%; height:" + vHeight + "px\" src=\"" + iframesrc + "\"></iframe>"; 
    } 
    window.onload = init; 
</script> 

...

<td id="td1" style="width: 100%; height:100%;">     
</td> 
0

he aquí una solución usando jQuery:

$('#iframe').height($('#iframe').contents().find('body').height());