今回はjquery+ajaxを適用する際にiframeの高さに合わせるための注意点をお届けします。一緒に見ていきましょう。
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.contentWindow.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; iframeLoaded(oIframe); } catch (err) { try { parent.document.getElementById(window.name).height = 1000; } catch (err2) { } } }
reSetIframeHeight() メソッドを呼び出します。
ただし、jquery ajax を使用してデータをリクエストする別の状況もあります。本体のロードが完了した後も、データはまだ http リクエストを行っており、この時点ではウィンドウの高さを占有するデータがないため、reSetIframeHeight メソッドを使用できません。高さを計算します。
このとき、私たちはメソッドを考えます: ajax はいつ実行できるでしょうか? もちろん、Complete イベント は実行が完了したときです。
ただし、各ページの ajax Complete イベントに処理を追加することはできません。ここではjquery ajaxのグローバル変数を使用します。
ajax と iframe の適応を処理するコード:
var sendcount = 0; var completecount = 0; // 添加ajax全局 事件处理 。 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 () { });
まず reSetIframeHeight を実行し、各 ajax が完了した後に reSetIframeHeight を呼び出します。
この記事の事例を読んだ後は、この方法を習得したと思います。さらに興味深い情報については、php 中国語 Web サイトの他の関連記事に注目してください。
推奨読書:
jQuery が iframe をフロントエンドの高さに適応させる方法
Jquery は iframe ページの Dom 要素を取得します (コード付き)
jQuery のクロスドメイン操作 DOM メソッドiframe
以上がjquery + ajax を適用すると、iframe の高さが適応可能になりますの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。