加载新内容时调整iFrame的高度

时间:2015-02-05 00:58:18

标签: javascript jquery html iframe

我有一个iFrame,它包含在我的HTML中,并在页面加载时可用。首次加载页面时,iFrame没有内容/ src。我正在使用jQuery动态地将内容插入到iFrame中。当用户点击我页面上的链接时,iFrame的内容会更新。所有这些对我都有用。但是,当加载新内容时,我正在努力调整iFrame的高度。我在StackOverflow上尝试了几种解决方案但没有成功。这是我的iFrame代码:

<iframe id="myframe" width="100%" frameborder="0"></iframe>

这是我的jQuery,它改变了我的iFrame中的HTML:

emailOpened.find('#myframe').contents().find('body').html(email.body);

这对我有用。我只需要我的iFrame根据被注入内容的高度调整其高度。我对这部分的所有尝试都失败了。

感谢任何帮助!

更新:

这是我的新HTML:

<iframe id="myframe" width="100%" frameborder="0">
  <body onload="parent.resizeIframe(document.body.scrollHeight);">
</iframe>

2 个答案:

答案 0 :(得分:2)

如果您需要移动支持并允许(用户)滚动iframe,请查看https://github.com/davidjbradshaw/iframe-resizer a作为修复iOS和Android上不同问题的插件解决方案。

我也必须支持移动设备,并在经过几个小时的研究和测试后最终使用它。我还使用提供的消息通道来回发送消息到内部文档。

答案 1 :(得分:0)

更改html后直接调用此函数。

      function resizeIframe() {
          var newHeight = document.getElementById('myframe').contentDocument.body.scrollHeight;
          document.getElementById('myframe').style.height = parseInt(newHeight,10) + 10 + 'px';
      }