La hauteur adaptative iframe elle-même est une méthode très simple, qui consiste à recalculer la hauteur après le chargement de la page.
Le code est le suivant :
//Méthode publique : Définition de la hauteur de l'iframe pour garantir que toutes les données sont affichées
//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;
}
}
}
//Réinitialiser la hauteur de l'iframe lors de la pagination ; Après modification : iframe.name = iframe.id
var reSetIframeHeight = function()
{
try {
var oIframe = parent.document. getElementById(window.name);
oIframe .height = 100;
} catch (err2) { ;
Mais il existe une autre situation dans laquelle jquery ajax est utilisé pour demander des données. Une fois le chargement du corps terminé, les données effectuent toujours une requête http. À ce stade, aucune donnée n'occupe la hauteur de la fenêtre et la méthode reSetIframeHeight. Je ne peux pas calculer la hauteur.
En ce moment, nous réfléchissons à une méthode : quand ajax peut-il être exécuté ? Bien sûr, l'événement Complete correspond au moment où l'exécution est terminée.
Mais nous ne pouvons pas ajouter de traitement à l'événement ajax Complete dans chaque page. Les variables globales de jquery ajax sont utilisées ici.
Code pour gérer l'adaptation ajax et iframe :
Copier le code
Le code est le suivant :
var sendcount = 0;
var completecount = 0;
}).ajaxComplete(function (e, xhr, opts) {
completecount ;
reSetIframeHeight();
}).ajaxStop(function () {
});
Exécutez d'abord reSetIframeHeight, puis une fois chaque ajax terminé, appelez reSetIframeHeight.
Testé et valide.