Я пытаюсь подгонять содержимое iframe (того же домена) в ранее существовавший iframe фиксированной высоты на моем сайте.масштабирование iframe в соответствии с контентом (javascript)
Содержимое динамически загружается в ранее существовавший iframe, а затем выполняется код в корпусе iframe, который должен масштабировать его вниз или вверх, чтобы была видна вся высота/ширина (то есть узкая/маленькая документы расширяются, длинные/широкие документы уменьшаются). Масштабирование выполняется с помощью CSS Zoom, пока я не думаю о лучшем способе.
function squeezeFrame() {
var b=document.getElementsByTagName('body')[0],
h=document.getElementsByTagName('html')[0],
zW=(b.clientWidth-5)/b.scrollWidth,
z=zW,
s="",
mult=0.25, // max +- scaling cap
maxH = (typeof document.height !== 'undefined') ? document.height : Math.max(b.scrollHeight, b.offsetHeight, h.clientHeight, h.scrollHeight, h.offsetHeight), // iframe content height
zH = (b.clientHeight)/maxH;
if (zH<zW && zH < 1) { z=zH } else { z=zW }; // single direction
if (z>1+mult) { z=1+mult; } else if (z<1-mult) { z=1-mult; }
s="zoom:"+z+";-moz-transform-origin: 0 0;-moz-transform: scale("+z+");";
if (typeof b.setAttribute === "function") b.setAttribute('style', s);
else if (typeof b.style.setAttribute === "object") b.style.setAttribute('cssText', s);
}
if (typeof window.addEventListener != "undefined") window.addEventListener("load", squeezeFrame, false);
else if (typeof window.attachEvent != "undefined") window.attachEvent("onload", squeezeFrame);
else {
if (window.onload != null) {
var chain = window.onload;
window.onload = function (e) {
chain(e);
squeezeFrame();
};
}
else window.onload = squeezeFrame;
}
Тем не менее, «scrollHeight» и «offsetHeight» и «clientHeight» все то же самое значение (в пределах нескольких пикселей - полоса прокрутки ширина/высота). Высота прокрутки не соответствует высоте, которую может прокручивать документ, она представляет высоту IFRAME в родительском документе.
Например, если высота содержимого iframe составляет 850 пикселей, а сам iframe равен 550 пикселей, содержимое прокрутки iframe неправильно возвращает «550».
Как рассчитать фактическую высоту прокрутки документа?
I ' m not sure, если это имеет к этому какое-либо отношение, но почему вы проверяете '! =" undefined "' вместо '! = undefined'? – SirPython
это не имеет ничего общего с проблемой. Если я выполняю« squeezeFrame », не работает. Также да, '! == undefined' будет лучше. – frumbert