0

我编写了一个 Javascript 脚本,它会根据 IFrame 的内容自动调整 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 库。

4

2 回答 2

1

我发现在某些情况下,在添加新内容时,IE 属性(例如 offsetHeight、clientHeight 和 scrollHeight)的设置不正确。我不得不使用 setTimeout 来允许重新绘制显示,然后才能从这些属性中获取准确的值。

于 2009-04-05T21:10:39.600 回答
1

很难在没有看到代码的情况下真正调试代码,但以下示例在 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>
于 2009-04-05T21:11:14.573 回答