例如:
<iframe name="Stack" src="http://stackoverflow.com/" width="740"
frameborder="0" scrolling="no" id="iframe"> ...
</iframe>
我希望它能够根据其中的内容调整其高度,而不使用滚动。
答案 0 :(得分:589)
将其添加到您的<head>
部分:
<script>
function resizeIframe(obj) {
obj.style.height = obj.contentWindow.document.body.scrollHeight + 'px';
}
</script>
并将您的iframe更改为:
<iframe src="..." frameborder="0" scrolling="no" onload="resizeIframe(this)" />
在sitepoint discussion上找到。
答案 1 :(得分:83)
您可以使用此库,它们最初可以正确调整iframe的大小,并通过检测iframe内容的大小发生变化(通过setInterval
中的常规检查或通过{{}进行检查,从而使其保持正确的大小1}})并调整它。
<强> https://github.com/davidjbradshaw/iframe-resizer 强>
这适用于跨域和同域iframe。
答案 2 :(得分:39)
这是一个紧凑版本:
<iframe src="hello.html"
onload="this.style.height=this.contentDocument.body.scrollHeight +'px';">
</iframe>
答案 3 :(得分:36)
hjpotter92 的建议在safari中不起作用! 我对脚本进行了一些小调整,所以它现在也适用于Safari。
只有更改后才会在每次加载时将高度重置为0,以使某些浏览器降低高度。
将其添加到<head>
代码:
<script type="text/javascript">
function resizeIframe(obj){
obj.style.height = 0;
obj.style.height = obj.contentWindow.document.body.scrollHeight + 'px';
}
</script>
并将以下onload
属性添加到您的iframe中,如此
<iframe onload='resizeIframe(this)'></iframe>
答案 4 :(得分:13)
避免使用内联JavaScript;你可以使用一个类:
fin = ws.UsedRange.Rows.count
For i = 2 To fin
ws.Range("AZ" & i).value = Application.WorksheetFunction.CountIf(ws.Range("W2:W" & fin), ws.Range("W" & i))
Next i
For j = fin To 2 Step -1
If ws.Range("AZ" & j).value > 2 OR Application.WorksheetFunction.CountIf(ws.Range("W2:W" & fin), ws.Range("W" & j)) = 2 Then
ws.Range("AZ" & j).EntireRow.Delete
End If
Next j
用jQuery引用它:
<iframe src="..." frameborder="0" scrolling="auto" class="iframe-full-height"></iframe>
答案 5 :(得分:13)
hjpotter92 答案在某些情况下效果不错,但我发现iframe内容经常在Firefox&amp; IE,虽然Chrome很好。
以下适用于我并修复剪辑问题。代码在http://www.dyn-web.com/tutorials/iframes/height/找到。我稍微修改了一下从HTML中获取onload属性。将以下代码放在<iframe>
HTML之后和结束</body>
代码之前:
<script type="text/javascript">
function getDocHeight(doc) {
doc = doc || document;
// stackoverflow.com/questions/1145850/
var body = doc.body, html = doc.documentElement;
var height = Math.max( body.scrollHeight, body.offsetHeight,
html.clientHeight, html.scrollHeight, html.offsetHeight );
return height;
}
function setIframeHeight(id) {
var ifrm = document.getElementById(id);
var doc = ifrm.contentDocument? ifrm.contentDocument:
ifrm.contentWindow.document;
ifrm.style.visibility = 'hidden';
ifrm.style.height = "10px"; // reset to minimal height ...
// IE opt. for bing/msn needs a bit added or scrollbar appears
ifrm.style.height = getDocHeight( doc ) + 4 + "px";
ifrm.style.visibility = 'visible';
}
document.getElementById('ifrm').onload = function() { // Adjust the Id accordingly
setIframeHeight(this.id);
}
</script>
您的iframe HTML:
<iframe id="ifrm" src="some-iframe-content.html"></iframe>
请注意,如果您希望在文档的<head>
中加入Javascript,那么您可以恢复使用onload
HTML中的内联iframe
属性,就像在中一样dyn-web 网页。
答案 6 :(得分:5)
jQuery的 .contents()方法方法允许我们搜索DOM树中元素的直接子元素。
jQuery的:
$('iframe').height( $('iframe').contents().outerHeight() );
请记住,iframe内部的页面正文必须具有高度
CSS:
body {
height: auto;
overflow: auto
}
答案 7 :(得分:3)
这对我有效(在一页上也有多个iframe):
$('iframe').load(function(){$(this).height($(this).contents().outerHeight());});
答案 8 :(得分:2)
这对我(主要是)有用。
将它放在页面底部。
<script type="application/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.10.2/jquery.min.js">
</script>
<script type="application/javascript" src="/script/jquery.browser.js">
</script>
<script type="application/javascript" src="/script/jquery-iframe-auto-height.js">
</script>
<script type="application/javascript">
jQuery('iframe').iframeAutoHeight();
$(window).load(
function() {
jQuery('iframe').iframeAutoHeight();
}
);
// for when content is not html e.g. a PDF
function setIframeHeight() {
$('.iframe_fullHeight').each(
function (i, item) {
item.height = $(document).height();
}
);
};
$(document).ready( function () {
setIframeHeight();
});
$(window).resize( function () {
setIframeHeight();
});
</script>
上半部分来自???,并且在iframe中有html时有效。
当iframes类为iframe_fullHeight
时,后半部分将iframe设置为页面高度(不是内容高度)。如果内容是PDF或其他类似内容,您可以使用此功能,但必须设置类。也只能在全高度合适的情况下使用。
注意:出于某种原因,在窗口调整大小后重新计算时,它会出现高度错误。
答案 9 :(得分:1)
jq2('#stocks_iframe').load(function(){
var iframe_width = jq2('#stocks_iframe').contents().outerHeight() ;
jq2('#stocks_iframe').css('height',iframe_width); });
<iframe id='stocks_iframe' style='width:100%;height:0px;' frameborder='0'>
答案 10 :(得分:1)
尝试使用IE11
<iframe name="Stack" src="http://stackoverflow.com/" style='height: 100%; width: 100%;' frameborder="0" scrolling="no" id="iframe">...</iframe>
答案 11 :(得分:1)
function autoResize(id){
var newheight;
var newwidth;
if(document.getElementById){
newheight=document.getElementById(id).contentWindow.document.body.scrollHeight;
newwidth=document.getElementById(id).contentWindow.document.body.scrollWidth;
}
document.getElementById(id).height=(newheight) + "px";
document.getElementById(id).width=(newwidth) + "px";
}
将此添加到您的iframe: 的onload =&#34;自动调整(&#39; youriframeid&#39;)&#34;
答案 12 :(得分:0)
我是用AngularJS做的。 Angular没有ng-load,但是制作了第三方模块;在下方安装凉亭,或在此处找到:https://github.com/andrefarzat/ng-load
获取ngLoad指令:bower install ng-load --save
设置您的iframe:
<iframe id="CreditReportFrame" src="about:blank" frameborder="0" scrolling="no" ng-load="resizeIframe($event)" seamless></iframe>
Controller resizeIframe功能:
$scope.resizeIframe = function (event) {
console.log("iframe loaded!");
var iframe = event.target;
iframe.style.height = iframe.contentWindow.document.body.scrollHeight + 'px';
};
答案 13 :(得分:0)
我过去曾遇到问题,为动态创建的iframe调用iframe.onload,所以我采用这种方法来设置iframe大小:
iFrame查看
var height = $("body").outerHeight();
parent.SetIFrameHeight(height);
主视图
SetIFrameHeight = function(height) {
$("#iFrameWrapper").height(height);
}
(只有在两个视图位于同一个域中时才会起作用)
答案 14 :(得分:-2)
<script type="text/javascript">
function resizeIframe(obj) {
obj.style.height = 0;
obj.style.height = obj.contentWindow.document.body.scrollHeight + 'px';
}
</script>
这不适用于Chrome。但是为firefox工作。
答案 15 :(得分:-2)
我想让RequestQueue queue = Volley.newRequestQueue(getApplicationContext());
StringRequest request = new StringRequest(Request.Method.POST, url,
new Response.Listener<String>() {
@Override
public void onResponse(String s) {
// Success
}
}, new Response.ErrorListener() {
@Override
public void onErrorResponse(VolleyError volleyError) {
// Error
}
}) {
@Override
protected Map<String, String> getParams() throws AuthFailureError {
return params;
}
};
queue.add(request);
表现得像普通页面(我需要在iframe
元素中制作全屏横幅),所以这是我的脚本:
iframe
这些功能不言自明,并有进一步解释其目的的评论。
答案 16 :(得分:-4)
此选项将100%
<iframe id='iframe2' src="url.com" frameborder="0" style="overflow: hidden; height: 100%; width: 100%; position: absolute;" height="100%" width="100%"></iframe>