Die adaptive Iframe-Höhe selbst ist eine sehr einfache Methode, bei der die Höhe nach dem Laden der Seite neu berechnet wird.
Der Code lautet wie folgt:
//Öffentliche Methode: Festlegen der Höhe des Iframes, um sicherzustellen, dass alle Daten angezeigt werden
//function SetPageHeight() {
// var iframe = getUrlParam('ifname');
// var myiframe = window.parent.document.getElementById(iframe );
// iframeLoaded(myiframe);
//}
var iframeLoaded = function (iframe) {
if (iframe.src.length > ; 0) {
if (! iframe.readyState || iframe.readyState == "complete") {
var bHeight =
iframe.contentWindow.document.body.scrollHeight;
var dHeight =
iframe.content Window.document.documentElement .scrollHeight;
var height = Math.max(bHeight, dHeight);
iframe.height = height;
}
}
}
//Setzen Sie die Iframe-Höhe beim Paginieren zurück; Nach der Änderung: iframe.name = iframe.id
var reSetIframeHeight = function()
{
try {
var oIframe = parent.document. getElementById(window.name);
oIframe .height = 100;
} Catch (err2) { ;
Aber es gibt eine andere Situation, in der Jquery Ajax zum Anfordern von Daten verwendet wird. Nach Abschluss des Body-Loads stellen die Daten noch eine HTTP-Anfrage. Zu diesem Zeitpunkt belegen keine Daten die Fensterhöhe und die reSetIframeHeight-Methode kann die Höhe nicht berechnen.
Zu diesem Zeitpunkt denken wir über eine Methode nach: Wann kann Ajax ausgeführt werden? Natürlich ist das Complete-Ereignis, wenn die Ausführung abgeschlossen ist.
Wir können jedoch nicht auf jeder Seite eine Verarbeitung zum Ajax-Complete-Ereignis hinzufügen. Hier werden die globalen Variablen von jquery ajax verwendet.
Code zur Handhabung der Ajax- und Iframe-Anpassung:
Code kopieren
Der Code lautet wie folgt:
var sendcount = 0;
var Completecount = 0;
}).ajaxComplete(function (e, xhr, opts) {
completecount ;
reSetIframeHeight();
}).ajaxStop(function () {
});
Führen Sie zuerst reSetIframeHeight aus und rufen Sie dann nach Abschluss jedes Ajax auf reSetIframeHeight.
Getestet und gültig.