2011-02-09 16 views
8

Jak ustawić wysokość elementu iframe do zawartości w nim? Zakładam, że obliczyłbyś różnicę między wysokością treści a wysokością iframe (coś, czego nie wiem, jak to zrobić) i używałam tego z pętlą while do zwiększania zmiennej do użycia jako wysokości, ale nie mogę zawijać porozmawiajmy o tym, jak naprawdę robić te rzeczy. Zanim zapytam: tak, treść w ramce pochodzi z mojej strony. Nie w wielu domenach.Wysokość iframe pasuje do treści

+0

czy ktoś nadal używać ramek? – yoda

+6

@yoda miał na myśli iframe i są używane tylko przez nieistotne firmy na stronach takich jak Google i Facebook. –

+0

treść w ramce znajduje się na twojej stronie? – Trufa

Odpowiedz

1

Nie całkiem pewien, dlaczego chcesz używać iframe, a nie dynamiczne div wypełniony, powiedzmy, za pośrednictwem ajax, ale:

Umieść zawartość w iframe do div, a następnie uzyskać wysokość div. Sugeruję użyciu jquery tak:

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

Ale jeśli nie można użyć jQuery, powinieneś być w stanie korzystać z tego:

document.getElementById("divId").offsetHeight; 

Potem trzeba ustawić wysokość iframe za do wszystkiego, co masz.

jquery:

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

regularne JS:

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

to nie działa. Nie możesz uzyskać dostępu do elementu iframe div spoza ramki iframe. –

+3

Możesz jednak zrobić to: 'document.getElementById (" frameId "). ContentWindow.document.getElementById (" id ")' – JCOC611

+0

@ JCOC611 'document.getElementById ("frameId"). contentWindow.document' jest także zabroniony, aby uzyskać dostęp do tych dni, o ile widzę (przynajmniej w 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> 

i wewnątrz somthing.html, na dnie lub zdarzenia onload zrobić coś na wzór

window.parent.window.onContentChange() 
+0

Powinien być '' '$ ('# moo')' '' jeśli to ma być wywołanie jquery ... – Guntram

+0

Kiedy to napisałem, byłem facetem mootools. –

0

Renderuj dynamicznie element iframe w javasc ript po narysowaniu elementu kontenera ("td1").

<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

Oto rozwiązanie przy użyciu jQuery:

$('#iframe').height($('#iframe').contents().find('body').height()); 
Powiązane problemy