Js動的取得iframeサブページの高さ//////////////////////////////zzz

5435 ワード

Js動的取得iframeサブページの高さ


 
Js動的取得iframeサブページの高さのまとめ

問題の缘由


製品のコメントリストはiframeを参照しており、高度が固定されていないため、このまとめを引き起こしています.

方法1:親ページサブページの高さを取得要素に高さを設定する


この方法は親ページで、子ページの高さを取得してiframeに高さを設定する方法です.
いくつかの互換性に関する問題があります.
IEはattachEvent|3 Cでonloadでサブページのロード完了を判定する.
IE用contentWindow|3 C用contentDocumentでサブページを取得
IE用document.documentElement.scrollHeight(ie 6 ie 7互換)|3 C用body.scrollHeightページの高さの取得
function setIframeHeight(id){  try{   var iframe = document.getElementById(id);   if(iframe.attachEvent){    iframe.attachEvent("onload", function(){     iframe.height = iframe.contentWindow.document.documentElement.scrollHeight;    });    return;   }else{    iframe.onload = function(){     iframe.height = iframe.contentDocument.body.scrollHeight;    };    return;   }  }catch(e){   throw new Error('setIframeHeight Error');  } }

方法2:子ページ親ページ要素の高さを設定する


この方法は、子ページで使用し、子ページの高さを取得して親iframeに高さを設定します.
子ページはparentによって親iframeを取得してiframeに高さを設定し、同じ方法1と互換性がある.
欠点は、親ページをブラシするときにiframeにキャッシュがあり、キャッシュをクリーンアップする必要があることです.
function setParentIframeHeight(id){  try{   var parentIframe = parent.document.getElementById(id);   if(window.attachEvent){    window.attachEvent("onload", function(){     parentIframe.height = document.documentElement.scrollHeight;    });    return;   }else{    window.onload = function(){     parentIframe.height = document.body.scrollHeight;    };    return;   }  }catch(e){   throw new Error('setParentIframeHeight Error');  } }

注意が必要なドメイン間操作


2つのページに1つの状況がある場合、2つのサブドメイン名:
 
aaa.xxx.com
bbb.xxx.com
2つのページを次のように設定する必要があります.
document.domain ="xgo.com.cn";
これでこの2つのページは互いに操作することができます.つまり、同じベースドメイン名間の「ドメイン間」を実現します.
利用するdomain実装ドメイン間:
前提条件:この2つのドメイン名は同じ基礎ドメイン名に属する必要があります.また、使用するプロトコルは、ポートが一致しなければdocumentを利用できません.domainドメイン間
Javascriptは、セキュリティを考慮して、2つ以上の異なるドメインのページの相互操作を禁止します.
同じドメインのページは、相互に操作しても問題ありません.
転載先:https://www.cnblogs.com/zouzou-blog/p/5948771.html