Google は、「悪を行わない」というスローガンを守っているようです。Chrome は iframe の高さを動的に調整できますが、Google はそれを簡単にはできません。2日間問題に取り組み、他のすべてのブラウザで完全に機能する大量のjavascriptスニペットを試した後、Chromeは最終的に機能するものを手に入れることができました. これを共有して、他のウェブサイト開発者が私が経験しなければならなかった 48 時間の苦痛から解放されることを願っています.
外部の SetiFrameHeight.js ファイル内で、html を使用して任意の iframe 子ドキュメントに追加できます。
<script type="text/javascript" src="SetiFrameHeigh.js"></script>
setIframeHeight.js
window.onload=setIframeHeight(window.top.document.getElementById('iFrame_ID'));
//note this code only runs serverside when using Google Chrome, very helpful
function setIframeHeight(ifrm){
var doc = ifrm.contentDocument? ifrm.contentDocument:
ifrm.contentWindow.document;
var RestHeight=ifrm.style.height; //Capture original height see why below.
ifrm.style.visibility = "hidden";
ifrm.style.height = "10px"; //Necessary to work properly in some browser eg IE
var NewHeight = getDocHeight( doc ) + 10;
if (NewHeight>20){
ifrm.style.height=NewHeight + "px";
} else { //if dom returns silly height value put back old height see above.
ifrm.style.height=RestHeight + "px";
}
ifrm.style.visibility = "visible";
}
function getDocHeight(doc) {
doc = doc || document;
var body = doc.body, html = doc.documentElement;
var height = Math.max( body.scrollHeight, body.offsetHeight, html.clientHeight,
html.scrollHeight, html.offsetHeight );
return height;
}
このコード スニペットの本当の魔法は、基本的に考えられるすべての dom の組み合わせを試して、最大の高さを与えるものを選択する関数 getDocHeight です。これはhttp://www.christersvensson.com/html-tool/iframe.htmから入手したため、信用できません。