iframe同域または異域での高度自動適応(互換ブラウザ)
28579 ワード
javascriptを利用してiframeの高度自動適応を制御して、javascriptの異なるドメイン名に対する権限の制限を介在して、二つの状況に分けます.
ドメイン名と同じ場合:
ドメイン名の下で、iframeは自動的に高度に適応します.比較的簡単です.下のコードはすべてのブラウザに対応します.
メールがあると仮定して、サーバーA上にロードすべきページtestがあります.サーバーB上にあります.iframeを利用してtestをロードします.iframeの高さは自動的に拡張されます.仲介ページを使うことができます.
方法:
Bサーバー上のページtest.を利用して、iframeを隠してz.をロードして、test.htmlページで自分のページの高さを計算して、z)のhash=z.を割り当てます.zhi(計算された高さ)をロードする時、hashを取得して、main.の中でiframeの高さを設定します.無駄話は言わないで、直接下のコードを見てください.
メイン.
転載:http://www.cnf2e.com/javascript/iframe-auto-height.html
ドメイン名と同じ場合:
ドメイン名の下で、iframeは自動的に高度に適応します.比較的簡単です.下のコードはすべてのブラウザに対応します.
- <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
- <html xmlns="http://www.w3.org/1999/xhtml">
- <head>
- <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
- <title>iframe </title>
- <script type="text/javascript">
- <!--//
- function sizeFrame() {
- var F = document.getElementById("myFrame");
- if(F.contentDocument) {
- F.height = F.contentDocument.documentElement.scrollHeight; //FF 3.0.11, Opera 9.63, and Chrome
- } else {
- F.height = F.contentWindow.document.body.scrollHeight; //IE6, IE7 and Chrome
- }
- }
- window.onload=sizeFrame;
- //-->
- </script>
- </head>
- <body>
- <iframe width="100%" id="myFrame" src="http://www.a.com" scrolling="no" frameborder="0"> </iframe>
- </body>
- </html>
異域の場合:メールがあると仮定して、サーバーA上にロードすべきページtestがあります.サーバーB上にあります.iframeを利用してtestをロードします.iframeの高さは自動的に拡張されます.仲介ページを使うことができます.
方法:
Bサーバー上のページtest.を利用して、iframeを隠してz.をロードして、test.htmlページで自分のページの高さを計算して、z)のhash=z.を割り当てます.zhi(計算された高さ)をロードする時、hashを取得して、main.の中でiframeの高さを設定します.無駄話は言わないで、直接下のコードを見てください.
メイン.
- <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
- <html xmlns="http://www.w3.org/1999/xhtml">
- <head>
- <script type="text/javascript">
- <!--//
- function sizeFrame() {
- var F = document.getElementById("iframeB");
- if(F.contentDocument) {
- F.height = F.contentDocument.documentElement.scrollHeight; //FF 3.0.11, Opera 9.63, and Chrome
- } else {
- F.height = F.contentWindow.document.body.scrollHeight; //IE6, IE7 and Chrome
- }
- }
- window.onload=sizeFrame;
- //-->
- </script>
- </head>
- <body>
- <iframe id="iframeB" name="iframeB" src="http://www.b.com/test.html" width="100%" height="auto" scrolling="no" frameborder="0"></iframe>
- </body>
- </html>
-
test.ページに追加するコードは以下の通りです.
- <iframe id="iframeA" name="iframeA" src="" width="0" height="0" style="display:none;" ></iframe>
- <script type="text/javascript">
- function sethash(){
- hashH = document.documentElement.scrollHeight; //
- urlC = "http://www.a.com/z.html"; // iframeA src
- document.getElementById("iframeA").src=urlC+"#"+hashH; //
- }
- window.onload=sethash;
- </script>
仲介ページz.コード:
- <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
- <html xmlns="http://www.w3.org/1999/xhtml">
- <head>
- <script type="text/javascript">
- function pseth() {
- var iObj = parent.parent.document.getElementById('iframeB');//A main ,
- iObjH = parent.parent.frames["iframeB"].frames["iframeA"].location.hash;// location hash
- iObj.style.height = iObjH.split("#")[1]+"px";// dom
- }
- pseth();
- </script>
- </head>
- <body>
- </body>
- </html>
デモを見る転載:http://www.cnf2e.com/javascript/iframe-auto-height.html