我已经写了一个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>
许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top