Google, кажется, живут до их слоганом "не делали никакого зла". Хотя Chrome способен динамически регулировать высоту iframe, Google не делает это очень легко. После двух дней борьбы с проблемой и попыток тонких фрагментов javascript, которые отлично работали в любом другом браузере, но Chrome, я, наконец, смог получить что-то, что сработает. Я поделюсь этим, чтобы надеяться, что другим разработчикам сайта хватит 48 часов, которые мне пришлось пройти.
Внутренний внешний файл SetiFrameHeight.js, который затем может быть добавлен в любой дочерний документ iframe с помощью html.
<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;
}
Реальная магия этого фрагмента кода функция getDocHeight, которая в основном пытается все возможные комбинации Dóm и выбирает тот, который дает максимальную высоту. Я не могу взять кредит за то, что получил его от http://www.christersvensson.com/html-tool/iframe.htm.
Я в конечном итоге исправил его, удалив высоту из тега iframe. – user2264325