自动Iframe高度

时间:2009-12-24 06:29:31

标签: javascript iframe

请帮帮我,

第一次iframe高度根据加载的高度而变化,但iframe内容被更改为比当前高度更大的高度,并且再次降低其未采用新值。

例如 加载的iframe高度= 1386px 新内容更改iframe height = 3440px 并再次更改为新高度= 3440px(但实际高度远小于1300px)

这是我试过的

$('iframe').load(function()
        {
            document.getElementById('loaderIFRAME').style.display = 'none';
            document.getElementById('myiframe').style.display = 'block';
            // Set inline style to equal the body height of the iframed content.

            if($.browser.msie){
                this.style.height = this.contentWindow.document.body.scrollHeight + 'px';
            }else{
                this.style.height = this.contentWindow.document.body.scrollHeight + 'px';
            }
        }

和另一个也相同

function autoIframe(frameId) {
 try{
      frame = document.getElementById(frameId);
      innerDoc = (frame.contentDocument) ? frame.contentDocument : frame.contentWindow.document;
      objToResize = (frame.style) ? frame.style : frame;
      objToResize.height = innerDoc.body.scrollHeight + 10+ 'px';
      alert( objToResize.height);
   }
   catch(err){
      window.status = err.message;
   }
}

我该如何解决?

1 个答案:

答案 0 :(得分:2)

问题是,当你将iframe高度设置为一个大值时,它的scrollHeight总是等于大值,即使实际文档高度较小。您可以尝试将iframe高度设置为1px,然后读取scrollHeight属性。

$('iframe').load(function(){
   try {
      var body = $(this).contents().find('body');
      this.height = 1;
      this.height = body.attr('scrollHeight');
   } catch(e){}
});

有时最好使用offsetHeight + offsetTop属性。 Here您可以找到我对此脚本的旧实现。