javascript - iframe 动态调整高度

标签 javascript jquery browser webkit

您好,我目前有 2 个页面(index.html 和 iframe_contents.html)。两者都在同一个域中。

我目前正在尝试让 iframe 根据内容大小动态调整大小。

我用它来帮助我 http://benalman.com/code/projects/jquery-resize/examples/resize/如果 iframe_contents body 标签在 Firefox 和 IE 7/8/9 上变大或变小,它会起作用,但对于 webkit,它只能增长而永远不会缩小

我已将其缩小到 iframe_contents.html 中的 body 标记,当内容高度发生变化时不会收缩,但仅在 iframe 中收缩。当 iframe_contents.html 不在 iframe 中时,如果我缩小/放大元素,主体的整体高度会发生变化。

这是一个特定于 webkit 的问题吗?

最佳答案

在这里阅读了很多答案后,他们都遇到了同样的问题,即在需要时不调整更小的大小。我认为大多数人只是在框架加载后进行一次性调整大小,所以也许不在乎。每当窗口大小发生变化时,我都需要再次调整大小。所以对我来说,如果他们将窗口变窄,iframe 会变得非常高,然后当他们将窗口变大时,它应该再次变短。这在某些浏览器上没有发生,因为 scrollHeight、clientHeight、jquery height() 和我可以通过 DOM 检查器(FireBug/Chrome 开发工具)找到的任何其他高度在 iframe 之后没有报告 body 或 html 高度变短变得更宽。就像 body 设置了 min-height 100% 之类的。

对我来说,解决方案是使 iframe 高度为 0,然后检查 scrollHeight,然后设置为该值。为避免页面上的滚动条跳来跳去,我将父级(包含 iframe)的高度设置为 iframe 高度,以在执行此操作时保持页面总大小固定。

我希望我有一个更干净的示例,但这是我的代码:

        $(element).parent().height($(element).height());
        $(element).height(0);
        $(element).height($(element).contents().height());
        $(element).parent().height("");

元素是我的 iframe。

iframe 具有 width: 100% 样式集,并且位于具有默认样式( block )的 div 中。

代码为jquery,将div高度设置为iframe高度,然后将iframe设置为0高度,再将iframe设置为contents高度。如果我删除将 iframe 设置为 0 高度的行,iframe 将在需要时变大,但永远不会变小。

关于javascript - iframe 动态调整高度,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7248992/

相关文章:

javascript - 将 jQuery 函数作为字符串传递

.net - 打开默认网络浏览器

java - 嵌入到java中的网络浏览器

javascript - 带有元素作为变量的 JQuery parentsUntil 未按预期工作

javascript - Recaptcha.create 在本地工作,但不在服务器上工作

javascript - 删除 Azure 表存储中的大量条目

javascript - 使用 javascript 添加图像后浏览器滚动条移动

javascript - TypeScript 产生无法访问的代码

javascript - jQuery 从 JSON 创建选择列表选项,没有像宣传的那样发生?

javascript - jquery 不在 div 中插入 html 或文本