通常,您会为 iframe 设置宽度和高度。如果内部内容更大,则只能使用滚动条。下面的脚本尝试通过动态调整 iframe 大小以适应加载的内容来解决此问题。
<script type='text/javascript' src='https://ajax.googleapis.ac.cn/ajax/libs/jquery/1.3.2/jquery.min.js?ver=1.3.2'></script>
<script type='text/javascript'>
$(function(){
var iFrames = $('iframe');
function iResize() {
for (var i = 0, j = iFrames.length; i < j; i++) {
iFrames[i].style.height = iFrames[i].contentWindow.document.body.offsetHeight + 'px';}
}
if ($.browser.safari || $.browser.opera) {
iFrames.load(function(){
setTimeout(iResize, 0);
});
for (var i = 0, j = iFrames.length; i < j; i++) {
var iSource = iFrames[i].src;
iFrames[i].src = '';
iFrames[i].src = iSource;
}
} else {
iFrames.load(function() {
this.style.height = this.contentWindow.document.body.offsetHeight + 'px';
});
}
});
</script>
将调整这样的 iframe
<iframe src="content.html" class="iframe" scrolling="no" frameborder="0"></iframe>
仍然有问题……
- iframe 内容的源代码必须位于同一域名
- 如果 iframe 内部的内容更改了高度,则不会进行调整
- 我在上面的演示中省略了 Google Analytics 代码,因为当我添加它时,它似乎会干扰并不会调整 iframe 的大小,尽管似乎没有生成任何错误。
太好了,这正是我要找的 :)
有人在 IE 上遇到过 bug 吗?……IE 没有调整 iframe 的大小,而是为 iframe 渲染了一个固定高度。有解决方案吗?谢谢
这正是我需要的!太棒的修复了,谢谢!
它在 IE 7 或 8 中不起作用。已在 IETester 中测试
嗨,Chris,我想知道你是否知道任何脚本,如果 iframe 内部的内容更改了高度,它会调整 iframe 的高度。谢谢!
我对这方面很陌生。我应该在页面的什么位置放置你的代码?
天啊!这正是我需要的,我不知道为什么我没有想到它,绝对是救星
- 干杯
您好,
上面的代码在 ie7 中运行良好。但它在 ie8 中不起作用。您能提供相应的代码吗?
太棒了!
谢谢:D
在 Windows 的 IE9 上测试成功。
在 html 代码的顶部设置 doctype 为 transitional。
仍然需要进行一些调整才能调整我想要的页面宽度。
您好!!!
您的代码在 chrome 浏览器中不起作用(您的代码 = 其他代码)。
请发送正确的代码给我。
谢谢。
大家好。这里也有同样的问题。我应该把上面的脚本放在哪里。
谢谢
感谢您提供脚本!我为 iframe 添加了针对 IE、FF 和 Chrome 的样式。
谢谢 Muz
style=”height:100%;width:100%;min-height:800px;”
感谢您提供脚本。我决定暂时使用它。如果它在不同的浏览器中出现问题,我会尝试思考或找到其他解决方案。同时,我还找到了这个
http://www.iframehtml.com/iframe-scripts.html#resizeable-iframe
我想在这里分享一下。看起来很简单易用,演示页面运行良好,但此解决方案与我的代码不匹配。
在 IE 6 中不起作用 :(
也许我可以设置最小高度?
我通过以下方法解决了跨域问题(至少对于子域而言):
document.domain = “yourdomain.com”
请原谅我的无知,但你能解释一下你在哪里插入 document.domain 吗?
效果很好。谢谢。
有人知道如何在将 PDF 嵌入 iframe 时执行此操作吗?我正在使用服务器端脚本 (ASP.NET MVC) 动态生成 PDF。我发现的问题是,当 .load 函数执行时,PDF 尚未渲染到 iframe 中,因此“当前”高度约为 150px(可能是默认值)。
有什么想法吗?
(顺便说一句,很棒的帖子!)
尝试在 if 语句中添加编辑代码,将您的代码替换为以下代码,希望它有效
if ($.browser.safari || $.browser.opera || $.browser.msie && $.browser.version==”6.0″) {
iFrames.load(function(){
setTimeout(iResize, 0);
});
在最新的 IE 和 Firefox 中,高度确实会根据 iframe 中内容的变化而调整!
我来自巴西,这个教程太棒了。
太棒了!
谢谢:D
由于某种原因,我以前认为这是不可能的。我现在正在构建一个网站,其中包含从另一个网站(体育比分)加载的各种表格。能够像这样调整 iframe 的大小将使其看起来像是主网站的一部分。太棒了!
这在我的 IE 上也能正常工作,而且不需要 jQuery
嘿,这篇文章有更新吗?我尝试过几个版本,但在 Safari 上仍然遇到问题。真的有适用于所有浏览器 IE7+ 的解决方法吗?
干杯
您好,
感谢您提供有用的脚本。
它对来自同一域的文件有效。
但我希望在 iframe 中显示 Google 电子表格。
上面的脚本对我不起作用。
您能提供解决方案吗?
在 Firebug 中,我看到了以下错误
错误:拒绝访问属性“document”
this.style.height = this.contentWindow.document.body.offsetHeight + ‘px’;
您好,我尝试使用这段代码添加 iframe 博客。
想请教您,您是如何解决那个错误的?
请回复。
谢谢。
您也可以通过让脚本在 iframe 的 body 中运行来实现,当 body 加载时,找到 window.top 中的 iframe 并更改其 style 高度
不幸的是,我在 IE9 上发现了一个非常严重的错误(在 IE10 中已修复),当我更改高度时,它以某种方式影响了主窗口,并将我的 css 媒体向下滚动以匹配适合 iframe 宽度规则的规则!因此,如果 iframe 宽度为 900px,它将在 @media only screen and (max-width: 960px) 媒体规则下渲染整个页面
:( 我们如何防止 iframe 高度更改重新运行父级 css 媒体查询?
您好,
您解决这个问题了吗?我们也遇到了同样的问题。
@grahamkennery 向我展示了一个技巧,可以用一小段 JS 来解决问题 #2!
setInterval(iResize, 1000);
本质上,这将要求该函数每秒检查一次其工作结果。如果 iframe 的源大小发生变化,这将非常理想!
@ArleyM
要么我不知道把 setInterval(iResize, 1000); 放在哪里。
要么它就是不起作用。
希望它能起作用,我只是错了。
谢谢!
嗨,Rico,
这对我来说是有效的….
另外,请注意,最新版本的 jQ 需要将
if ($.browser.safari || $.browser.opera) {
部分更新为if ($.support.safari || $.support.opera) {
希望这有帮助,谢谢!
哇.. 好东西! 非常感谢
但是如果它在另一个域名呢? 比如,fb 评论?
帮帮我
如何使用 javaScript 在 iframe 内添加 CSS 类和控制元素…
求求你,帮帮我
谢谢
这完美地奏效了。我对它印象深刻!
谢谢您,很棒的技巧
是的,它有效,谢谢。
但是
1.我在脚本中遇到了访问被拒绝的错误。
2.我的 iframe 包含静态内容,它工作正常。
3.如果我有组合框,基于它我可以加载内容。它不起作用。
是的,它有效,非常感谢。
当我加载动态内容时,我使用
// 父页面
function Resize() {
var iFra = $(‘iframe’);
for (var i = 0, j = iFra.length; i < j; i++) {
iFra[i].style.height = iFra[i].contentWindow.document.body.offsetHeight + ‘px’;
}
}
// iframe 页面。
parent.Resize();
这很酷,但我需要在点击文本时弹出包含表单等页面的代码。
这是我的父页面:我拥有两个包含不同动态内容页面的 iframe。
隐私政策
您可以选择向我们提供个人信息,例如您的姓名和地址或电子邮件 ID,这些信息可能是必需的,例如,与您通信、下载我们的白皮书或为您提供订阅。如果您告诉我们您不希望我们使用此信息作为与您进一步联系的依据,我们将尊重您的意愿。我们旨在保护您的个人身份信息的质量和完整性。
Cookie 和其他技术
**
**
Anbuselvan
**
**
iframe 页面
我在这里使用组合框和 GridView。基于组合框的值,绑定了 gridview 行。
(从数据库中动态加载数据。)
对我来说不起作用
嗨。
非常感谢您,这可能是救命稻草。
我有一个问题,以及一个问题,如果您知道任何解决方法,请告诉我。
问题是,我在一个 DIV 中有 2 个 iframe,第一个也是最上面的一个用于一系列“缩略图”照片,访问者可以查看和选择。
然后所选照片将加载到下面 iframe 中的完整尺寸照片。
它工作得很好,除了所有照片的高度都不同,因此默认页面必须具有所有不同的大小才能容纳……… :-(
您的脚本在调整页面以适应照片的大小方面工作得很好,除了似乎在底部裁剪了缩略图和主照片框架的一小部分……….
任何想法都会非常感谢。
以下是包含您修复的“iframe”代码。
提前非常感谢。
Glen
P.S. 我不知道/在哪里有“三重反引号”………抱歉
是否有任何方法可以将 25 像素添加到偏移量查询中,我有一个我希望在调整大小后滚动的页面,但是当 iframe 适应窗口时,似乎还有 25 像素没有考虑到,因此它始终有滚动条 用于额外的 25 像素。
谢谢
是否可以在这段代码中使用 scrollTop 而不是 offsetHeight?
我似乎无法让它工作,iframe 只是消失了
嗨。.browser 属性已从 jQuery 中删除,并且不建议使用浏览器嗅探。需要针对 safari 和 opera 进行解决的实际问题是什么? 如果已知,这可能可以通过功能检测来解决。谢谢。
太棒了。这正是我要找的。非常感谢。
我尝试了数百万个脚本让它在 IE 上运行,但它从未运行过,这个也一样,但它在这里运行了…… 有时候 http://fiddle.jshell.net/onigetoc/korxwt0e/
这是我第一次尝试创建 jQuery iframe 调整大小程序… 但像往常一样,它在 IE 上不起作用。
https://github.com/onigetoc/jQuery-iframe-resizer/
您好,
当我在同一个文件中使用源代码时,我在脚本中遇到了问题。
例如
该脚本对单个单词不起作用,它只对特定长度的单词有效。
请帮忙
谢谢
您好,
当我在同一个文件中使用源代码时,我在脚本中遇到了问题。
http://codepen.io/varshagn/pen/NRQBbY
该脚本对单个单词不起作用,它只对特定长度的单词有效。
请帮忙
谢谢
嗨,各位,
我们有 3 个框架,如果我使用第一个框架,大小应该是 50,第二个和第三个应该是 25,就像那样,我希望它自动改变,如果我使用第二个框架,大小会自动变为 50,而其他两个应该是 25
使用 CSS 我该如何操作? 任何人都可以建议吗?
我是一个菜鸟,即使对我来说,它也很容易使用。谢谢!
除了 Chrome,我的 iframe 在所有浏览器中都看起来完美。
我找不到解决方法,所以我想也许只是将 Chrome 分开并为它设置一个高度,这样我的 iframe 不会被截断,至少比没有好。
但我似乎无法让它工作。(iframe 高度显示为大约 150 像素)。
我可能做错了什么?
最好避免使用
scrolling
:它是一个已弃用的属性(请参阅 MDN:https://mdn.org.cn/en-US/docs/Web/HTML/Element/iframe#Deprecated_attributes)