Вот наткнулся на ещё один подводный камень. Вот скрипт, который я использовал для решения вышеописанной проблеммы:
function autoIframe(frameId){
try{
frame = document.getElementById(frameId);
innerDoc = (frame.contentDocument) ? frame.contentDocument : frame.contentWindow.document;
objToResize = (frame.style) ? frame.style : frame;
objToResize.height = innerDoc.body.scrollHeight;
}
catch(err){
window.status = err.message;
}
}
Таким образом он вставляется во фрейм:
<iframe id="tree" name="tree" src="frame.htm" align="center" width="100%" scrolling="no" frameborder="0" marginheight="0" marginwidth="0" onload="if (window.parent && window.parent.autoIframe) {window.parent.autoIframe('tree');}">
Проблемма в том, что при загрузке во фрейм другого документа, который по высоте
меньше предыдущего, не меняется высота фрейма и остаётся чёрная полоса (у меня бэкграунд чёрный). Работает нормально (уменьшает высоту) только в IE. Mozilla, Opera оставляют (не уменьшают) полосу от прошлого документа.
Можно ли уменьшать высоту фрейма автоматически, после того, как в нём был загружен документ большего размера по высоте?