En hjpotter92 Antwort funktioniert gut genug in bestimmten Fällen, aber ich fand die iframe Inhalt oft unten beschnitten in Firefox & IE, während in Chrome in Ordnung.
Die folgende Methode funktioniert bei mir gut und behebt das Clipping-Problem. Der Code wurde gefunden unter http://www.dyn-web.com/tutorials/iframes/height/ . Ich habe eine kleine Änderung vorgenommen, um das onload-Attribut aus dem HTML zu entfernen. Platzieren Sie den folgenden Code nach dem <iframe>
HTML und vor dem Schließen </body>
Tag:
<script type="text/javascript">
function getDocHeight(doc) {
doc = doc || document;
// stackoverflow.com/questions/1145850/
var body = doc.body, html = doc.documentElement;
var height = Math.max( body.scrollHeight, body.offsetHeight,
html.clientHeight, html.scrollHeight, html.offsetHeight );
return height;
}
function setIframeHeight(id) {
var ifrm = document.getElementById(id);
var doc = ifrm.contentDocument? ifrm.contentDocument:
ifrm.contentWindow.document;
ifrm.style.visibility = 'hidden';
ifrm.style.height = "10px"; // reset to minimal height ...
// IE opt. for bing/msn needs a bit added or scrollbar appears
ifrm.style.height = getDocHeight( doc ) + 4 + "px";
ifrm.style.visibility = 'visible';
}
document.getElementById('ifrm').onload = function() { // Adjust the Id accordingly
setIframeHeight(this.id);
}
</script>
Ihr iframe HTML:
<iframe id="ifrm" src="some-iframe-content.html"></iframe>
Beachten Sie, wenn Sie es vorziehen, das Javascript in die <head>
des Dokuments, dann können Sie auf eine Inline-Anweisung zurückgreifen onload
Attribut in der Datei iframe
HTML, wie in der dyn-web Web-Seite.
2 Stimmen
Dies kann über CSS erfolgen. Es gibt ein Konzept in CSS namens Media-Queries, bei dem die Größe des Inhalts entsprechend der Bildschirmgröße angepasst wird.
1 Stimmen
Angular iFrame Auto-Höhe: gitlab.com/reduardo7/angular-iframe-auto-height
5 Stimmen
"Angular ", d.h., Javascript erforderlich? Mit anderen Worten, man kann dies nicht mit seitenübergreifenden Iframes tun (aufgrund von Cross-Site-Scripting-Einschränkungen), ist das richtig? Wie @clankill3r vorschlägt, zeigt dies die Notwendigkeit für eine reine CSS-Lösung für dieses Problem!