Da der Iframe ohne Rahmen nahtlos in die Webseite integriert werden kann, ist es möglich, einige Daten der Seite zu aktualisieren, ohne die Seite zu aktualisieren. Allerdings ist die Größe des Iframes nicht so „skalierbar“ wie die Ebene, was zu Problemen führt Das Problem ist, dass zu viel beim Einstellen der Iframe-Höhe nicht gut ist, und weniger ist noch schlimmer. Lassen Sie mich Ihnen nun eine Möglichkeit nennen, die Höhe des Iframes dynamisch anzupassen, hauptsächlich die folgende JS-Funktion.
Programmcode
Funktion SetWinHeight(obj)
{
var win=obj;
if (document.getElementById)
{
if (win && !window.opera)
{
if (win.contentDocument && win.contentDocument.body.offsetHeight)
win.height = win.contentDocument.body.offsetHeight;
sonst if(win.Document && win.Document.body.scrollHeight)
win.height = win.Document.body.scrollHeight;
}
}
}
Schließlich dürfen Sie beim Hinzufügen eines Iframes das Onload-Attribut nicht verlieren. Natürlich muss die ID auch mit dem Win in der Funktion übereinstimmen.
Programmcode
<iframe width="778" align="center" height="200" id="win" name="win" onload="Javascript:SetWinHeight(this)" frameborder="0" scrolling="no"></ iframe>
Iframe-Lösung für eine andere Situation (super einfach)
Wichtiger Hinweis: Die Webseitenadresse, die Sie in src= eingeben müssen, muss sich auf derselben Site wie diese Seite befinden, andernfalls wird ein Fehler mit der Meldung „Zugriff verweigert!“ angezeigt (eigentlich liegt dies am domänenübergreifenden Problem von Js, das zur Zugriffsverweigerung führt.
Ich bin schon einmal auf dieses Problem gestoßen. Ich habe online nach der Antwort gesucht und festgestellt, dass dieses Problem auch bei vielen Menschen aufgetreten ist.
1. Erstellen Sie eine Datei „bottom.js“ und geben Sie den folgenden Code ein (nur zwei Zeilen).
parent.document.all("Frame-ID-Name").style.height=document.body.scrollHeight;
parent.document.all("Frame-ID-Name").style.width=document.body.scrollWidth;
Der Frame-ID-Name ist hier die ID des Iframes, zum Beispiel:
<IFRAME id="Frame-ID-Name" name="left" frameBorder=0 scrolling=no src="XXX.asp" width="100%"></IFRAME>
2. Fügen Sie alle enthaltenen Dateien zu Ihrer Website hinzu
<script language = "JavaScript" src = "bottom.js"/></script>
3. OK, Schluss machen!
Den Test unter WINXP und IE6 bestanden. Es ist ganz einfach!
Implementieren Sie die adaptive Höhe des Iframes
Erkennen Sie die adaptive Höhe des Iframes, die sich automatisch an die Länge der Seite anpassen kann, um das Phänomen zu vermeiden, dass Bildlaufleisten gleichzeitig auf der Seite und im Iframe angezeigt werden.
Programmcode
<script type="text/javascript">
//** Iframe passt sich automatisch an die Seite an**//
//Geben Sie eine Liste mit Namen von Iframes ein, deren Höhe automatisch an die Höhe der Seite angepasst werden soll
//Trennen Sie die ID jedes Iframes durch ein Komma. Beispiel: ["myframe1", "myframe2"], es kann nur eine Form geben, daher ist kein Komma erforderlich.
//Definieren Sie die ID des Iframes
var iframeids=["test"]
// Wenn der Browser des Benutzers Iframe nicht unterstützt, ob der Iframe ausgeblendet werden soll, ja bedeutet ausgeblendet, nein bedeutet nicht ausgeblendet.
var iframehide="yes"
Funktion dyniframesize()
{
var dyniframe=new Array()
for (i=0; i<iframeids.length; i++)
{
if (document.getElementById)
{
// Iframe-Höhe automatisch anpassen
dyniframe[dyniframe.length] = document.getElementById(iframeids);
if (dyniframe && !window.opera)
{
dyniframe.style.display="block"
if (dyniframe.contentDocument && dyniframe.contentDocument.body.offsetHeight) //Wenn der Browser des Benutzers NetScape ist
dyniframe.height = dyniframe.contentDocument.body.offsetHeight;
else if (dyniframe.Document && dyniframe.Document.body.scrollHeight) //Wenn der Browser des Benutzers IE ist
dyniframe.height = dyniframe.Document.body.scrollHeight;
}
}
// Behandeln Sie gemäß den eingestellten Parametern die Anzeigeprobleme von Browsern, die iframe nicht unterstützen
if ((document.all || document.getElementById) && iframehide=="no")
{
var tempobj=document.all? document.all[iframeids] : document.getElementById(iframeids)
tempobj.style.display="block"
}
}
}
if (window.addEventListener)
window.addEventListener("load", dyniframesize, false)
sonst wenn (window.attachEvent)
window.attachEvent("onload", dyniframesize)
anders
window.onload=dyniframesize
</script>
Trackback: http://tb.blog.csdn.net/TrackBack.aspx?PostId=1608312