iframe の適応高さ自体は非常に単純な方法で、ページが読み込まれた後に高さを再計算します。
コードは次のとおりです:
//パブリック メソッド: すべてのデータが表示されるように iframe の高さを設定します
//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;
}
}
}
//ページ分割時に iframe の高さをリセットします ; 変更後: iframe.name = iframe.id
var reSetIframeHeight = function()
{
try {
var oIframe =parent.document. getElementById(window.name);
oIframe .height = 100 ;
} catch (err2) { ;
しかし、jquery ajax を使用してデータをリクエストする別の状況があり、本体のロードが完了した後、データはまだ http リクエストを行っており、この時点ではウィンドウの高さを占めるデータはなく、reSetIframeHeight メソッドが使用されます。高さを計算できません。
このとき、私たちはメソッドを考えます: ajax はいつ実行できるでしょうか? もちろん、Complete イベントは実行が完了したときです。
しかし、各ページの ajax Complete イベントに処理を追加することはできません。ここではjquery ajaxのグローバル変数を使用します。
ajax と iframe の適応を処理するコード:
コードをコピー
コードは次のとおりです:
var sendcount = 0;
var completecount = 0;
}).ajaxComplete(function (e, xhr, opts) {
completecount ;
reSetIframeHeight();
}).ajaxStop(function () {
});
最初に reSetIframeHeight を実行し、各 ajax が完了した後に呼び出します。 IframeHeight を再設定します。
テスト済みで有効です。