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
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'); } }
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'); } }