Machen iframe automatisch Höhe entsprechend dem Inhalt ohne Scrollbar anpassen?

Zum Beispiel:

<iframe name="Stack" src="http://stackoverflow.com/" width="740"
        frameborder="0" scrolling="no" id="iframe"> ...
</iframe>

Ich möchte, dass es seine Höhe entsprechend dem Inhalt anpassen kann, ohne dass ein Bildlauf erforderlich ist.

Lösung

Fügen Sie dies zu Ihrem Abschnitt `` hinzu:

<script>
  function resizeIframe(obj) {
    obj.style.height = obj.contentWindow.document.body.scrollHeight + 'px';
  }
</script>

Und ändern Sie Ihren iframe wie folgt:

Wie auf sitepoint discussion gefunden.

Kommentare (31)

Der Vorschlag von hjpotter92 funktioniert nicht in Safari! Ich habe eine kleine Anpassung am Skript vorgenommen, so dass es jetzt auch in Safari funktioniert.

Die einzige Änderung besteht darin, die Höhe bei jedem Laden auf 0 zurückzusetzen, damit einige Browser die Höhe verringern können.

Fügen Sie dies zum `` Tag hinzu:

<script type="text/javascript">
  function resizeIframe(obj){
     obj.style.height = 0;
     obj.style.height = obj.contentWindow.document.body.scrollHeight + 'px';
  }
</script>

Und fügen Sie das folgende "onload"-Attribut zu Ihrem iframe hinzu, etwa so

Kommentare (7)
function autoResize(id){
    var newheight;
    var newwidth;

    if(document.getElementById){
        newheight=document.getElementById(id).contentWindow.document.body.scrollHeight;
        newwidth=document.getElementById(id).contentWindow.document.body.scrollWidth;
    }

    document.getElementById(id).height=(newheight) + "px";
    document.getElementById(id).width=(newwidth) + "px"; 
}

fügen Sie dies zu Ihrem iframe hinzu: onload="autoResize('youriframeid')"

Kommentare (0)