HTML元素的高度属性不是由Internet Explorer设置
-
23-08-2019 - |
题
我已经写了一个Javascript脚本,自动调整一个IFrame的高度,这取决于它的内容。这是尽快完成的框架页面产生的内容;在Firefox没有问题,但在IE脚本正确执行,但没有观察到效果:该方法被调用的回调函数。任何建议吗? 如果我使用按钮执行该方法,它完美,并且帧得到调整大小。
我没有带权在我的前面的代码;调整大小的方法是这样的:
function resizeFrame(){
var frame = parent.document.getElementsById(window.me);
frame.style.height = document.offsetHeight;
}
和调用函数是这样的:
//init function
bunding.doSomeWork(callbackFunction);
...
function callbackFunction()
{
//does some HTML output
resizeFrame();
}
我使用Salesforce Ajax库。
解决方案
我已经发现,在某些情况下,在IE性能如的offsetHeight,clientHeight和scrollHeight属性当已经添加了新的内容的设定不正确。我不得不使用的setTimeout以允许显示器能够从这样的性质得到精确的值之前重新绘制。
其他提示
很难真正调试代码没有看到它,但下面的例子很适合我在IE和Firefox。
<!DOCTYPE html>
<html>
<head>
<title>so-iframeResize</title>
<script type="text/javascript" >
onframeload=function(iframe) {
var doc = iframe.contentWindow.document;
iframe.style.height = Math.max(
doc.getElementsByTagName("html")[0].offsetHeight,
doc.body.offsetHeight // IE prefers this value
) + "px";
};
</script>
</head>
<body>
<div id="page">
<iframe src="about:blank" onload="onframeload(this)">
</iframe>
</div>
</body>
</html>
不隶属于 StackOverflow