Javascript HTML元素';Internet Explorer未设置的高度属性
我编写了一个Javascript脚本,它根据IFrame的内容自动调整IFrame的高度。这是在框架页面的内容产生后立即完成的;在Firefox中没有问题,但在IE中,脚本被正确执行,但没有看到任何效果:在回调函数中调用该方法。有什么建议吗? 如果我使用一个按钮来执行这个方法,它会工作得很好,并且帧会被调整大小 我眼前没有密码;调整大小的方法如下所示:Javascript HTML元素';Internet Explorer未设置的高度属性,javascript,internet-explorer,firefox,iframe,height,Javascript,Internet Explorer,Firefox,Iframe,Height,我编写了一个Javascript脚本,它根据IFrame的内容自动调整IFrame的高度。这是在框架页面的内容产生后立即完成的;在Firefox中没有问题,但在IE中,脚本被正确执行,但没有看到任何效果:在回调函数中调用该方法。有什么建议吗? 如果我使用一个按钮来执行这个方法,它会工作得很好,并且帧会被调整大小 我眼前没有密码;调整大小的方法如下所示: function resizeFrame(){ var frame = parent.document.getElementsById(
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>
因此,我重新调整了尺寸
onframeload=函数(iframe){
var doc=iframe.contentWindow.document;
iframe.style.height=Math.max(
doc.getElementsByTagName(“html”)[0]。视线外,
doc.body.offsetHeight//IE首选此值
)+“px”;
};
问题是根据当前iframe的高度调整大小更新了onframeload函数,以根据内容的偏移设置高度这是一个非传统的解决方案…明天我将尝试此解决方案…非常烦人!TNX它工作得很好!似乎调用resize方法delayed可以让IE知道框架的高度。奇怪的行为。tnx