Ich kann sehen, dass diese Frage mehrmals gestellt wurde, aber keine der vorgeschlagenen Lösungen scheint für die Seite, die ich erstelle, zu funktionieren, also öffne ich den Thread erneut. Ich versuche, einen Iframe basierend auf der Höhe seines Inhalts zu bemessen. Sowohl die Seite, die den iframe enthält, als auch deren Quellseite sind in derselben Domäne vorhanden.Dynamische Größenanpassung eines Iframes
I haben die vorgeschlagenen Lösungen in jedem der folgenden Threads versucht:
Ich glaube, dass die oben genannten Lösungen sind wegen, wenn der Bezug auf Körper Arbeits .clientHeight erstellt, der Browser hat die Höhe des Dokuments nicht ermittelt.
Hier ist der Code ich verwende:
var ifmBlue = document.getElementById("ifmBlue");
ifmBlue.onload = resizeIframe;
function resizeIframe()
{
var ifmBlue = document.getElementById("ifmBluePill");
var ifmDiv = ifmBlue.contentDocument.getElementById("main");
var height = ifmDiv.clientHeight;
ifmBlue.style.height = (ifmBlue.contentDocument.body.scrollHeight || ifmBlue.contentDocument.body.offsetHeight || ifmBlue.contentDocument.body.parentNode.clientHeight || height || 500) + 5 + 'px';
}
Wenn ich das Skript mit Feuer debuggen, ist der Client Höhe des Haupt divs iframe.contentDocument 0. Zusätzlich body.offsetHieght, & Körper. scrollHeight sind 0. Nachdem ich das Skript beendet habe und das DOM des HTML-Iframe-Elements (mit Fire Debug) untersucht habe, kann ich sehen, dass clientHeight des Körpers 456 und clientHeight des inneren Teils 742 ist Diese Werte sind noch nicht festgelegt, wenn iframe.onload ausgelöst wird. Daher habe ich den Code in einem der obigen Threads in den body.onload-Ereignishandler der Quellseite des iframes verschoben. Diese Lösung hat auch nicht funktioniert.
Jede Hilfe, die Sie zur Verfügung stellen können, wird sehr geschätzt.
Danke,
CJ
Es gibt eine aktualisierte Version des Skripts hier: http://www.dynamicdrive.com/dynamicindex17/iframessi2.htm –
Dies scheint nicht in Chrome oder Safari zu arbeiten - wie der Inhalt ist es gut wächst, aber Wenn der Inhalt schrumpft, ändert sich die Höhe des Körpers nicht. Der IFrame wird also immer größer, niemals kleiner. –