На любом другом элементе я использовал бы scrollHeight
из Объекта DOM и установил бы высоту соответственно. Я не знаю, работало ли это над iframe (потому что они являются немного чудными обо всем), но это, конечно, стоит попытки.
Редактирование: взглянув вокруг, популярное согласие устанавливает высоту из iframe использование offsetHeight
:
function setHeight() {
parent.document.getElementById('the-iframe-id').style.height = document['body'].offsetHeight + 'px';
}
И присоединение, что для выполнения с iframe-телом onLoad
событие.
В IE 5.5 +, можно использовать contentWindow свойство:
iframe.height = iframe.contentWindow.document.scrollHeight;
В Netscape 6 (принимающий Firefox также), contentDocument свойство:
iframe.height = iframe.contentDocument.scrollHeight
Oli имеет решение, которое будет работать на меня. Для записи страница в моем iFrame представляется JavaScript, таким образом, мне будет нужна бесконечно малая задержка перед сообщением offsetHeight. Это похоже на что-то вдоль этих строк:
$(document).ready(function(){
setTimeout(setHeight);
});
function setHeight() {
alert(document['body'].offsetHeight);
}
На самом деле - вид кода Patrick обработанных для меня также. Корректный способ сделать это был бы вроде этого:
Примечание: вперед существует немного jQuery:
if ($.browser.msie == false) {
var h = (document.getElementById("iframeID").contentDocument.body.offsetHeight);
} else {
var h = (document.getElementById("iframeID").Document.body.scrollHeight);
}
Это решение работало лучше всего на меня. Это использует jQuery и ".load" событие iframe.
Я просто случайно пришел к вашему вопросу, и у меня есть решение. Но это в jquery. Это слишком просто.
$('iframe').contents().find('body').css({"min-height": "100", "overflow" : "hidden"});
setInterval( "$('iframe').height($('iframe').contents().find('body').height() + 20)", 1 );
Здорово!
Аплодисменты! :)
Edit: Если у вас есть редактор форматированного текста, основанный на методе iframe, а не на методе div, и вы хотите, чтобы он расширял каждую новую строку, то этот код сделает все необходимое.
Вот мертвое простое решение, которое работает во всех браузерах и с перекрестными доменами:
Во-первых, это работает на концепции, что если html-страница, содержащая iframe, имеет высоту 100%, и iframe оформлен с использованием css, чтобы иметь высоту 100%, тогда css автоматически изменит размер всего, чтобы соответствовать.
Вот код:
<head>
<style type="text/css">
html {height:100%}
body {
margin:0;
height:100%;
overflow:hidden
}
</style>
</head>
<body>
<iframe allowtransparency=true frameborder=0 id=rf sandbox="allow-same-origin allow-forms allow-scripts" scrolling=auto src="http://www.externaldomain.com/" style="width:100%;height:100%"></iframe>
</body>