document.body
представляет область просмотра, когда IE работает в режиме Quirks. Если документ внутри вашего iframe находится в Quirks, scrollHeight
из body
будет равен высоте его области просмотра, т.е. высота по умолчанию для фрейма.
Если вам действительно нужно получить высоту документа в режиме «Причуды», вам нужно добавить дополнительный div-обертку для измерения. Гораздо лучше исправить то, что все ваши документы используют тип документа в режиме стандартов. В этом десятилетии вы не должны создавать что-либо с Quirks Mode.
Кроме того, вы не должны использовать document.all
для сниффинга IE (это может пойти не так для других браузеров, которые его поддерживают), вы не должны использовать iframe.document
(это нестандартно и даже не задокументировано MSDN), и вы всегда должны добавлять 'px'
единиц (IE прекрасно справляется с этим, и вам это нужно в режиме Standards).
function change_height(iframe) {
var doc= 'contentDocument' in iframe? iframe.contentDocument : iframe.contentWindow.document;
iframe.style.height= doc.body.offsetHeight+'px';
}