Heim  >  Artikel  >  Web-Frontend  >  Lösung für das Problem der adaptiven Iframe-Höhe in JQuery Ajax Application_Javascript-Kenntnissen

Lösung für das Problem der adaptiven Iframe-Höhe in JQuery Ajax Application_Javascript-Kenntnissen

WBOY
WBOYOriginal
2016-05-16 16:52:35965Durchsuche

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:

Code kopierenDer 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;

//Ajax globale Ereignisverarbeitung hinzufügen. reSetIframeHeight();$(document).ajaxStart(function (a, b, c) {}).ajaxSend(function (e, xhr, opts) { sendcount ;}).ajaxError(function (e, xhr, opts) {}).ajaxSuccess(function (e, xhr, opts) {
}).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.
Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn