本文所分享的知识点是【iframe 高度设置、iframe 自适应高度方法总结】,欢迎您喜欢52ij所分享的新闻、攻略、电脑教程及手机知识等经验,下面是详细的讲解。
iframe 高度设置、iframe 自适应高度方法总结
谓iframe自适应高度,就是,基于界面美观和交互的考虑,隐藏了iframe的border和scrollbar,让人看不出它是个iframe。如果iframe始终调用同一个固定高度的页面,我们直接写死iframe高度就可以了。而如果iframe要切换页面,或者被包含页面要做DOM动态操作,这时候,就需要程序去同步iframe高度和被包含页的实际高度了。
如果iframe的高度没有确定,那将是初始的高度。
iframe是网页中的一部分,其大小还要受到网页的限制,设置最高可以使用height="100%"。
基本上解决iframe超出的高度都是增加了滚动条来实现的,很简单,如果你iframe中的信息超出了一屏幕,你就必须使用滚动条了。
开始用的时候还不行,后来发现是因为js跨域问题,没有权限。后来设置了window.document.domain 就可以了,用的是jquery代码2方法。
跨域下的iframe自适应高度
跨域的时候,由于js的同源策略,父页面内的js不能获取到iframe页面的高度。需要一个页面来做代理。
方法如下:假设www.a.com下的一个页面a.html要包含www.b.com下的一个页面c.html。
我们使用www.a.com下的另一个页面agent.html来做代理,通过它获取iframe页面的高度,并设定iframe元素的高度。
a.html中包含iframe:
<iframe src=http://www.cr173.com/html/"http://www.b.com/c.html" id="Iframe" frameborder="0" scrolling="no" style="border:0px;"></iframe>
在c.html中加入如下代码:
<iframe id="c_iframe" height="0" width="0" src=http://www.cr173.com/html/"http://www.a.com/agent.html" style="display:none" ></iframe>
<script type="text/javascript">
(function autoHeight(){
var b_width=Math.max(document.body.scrollWidth,document.body.clientWidth);
var b_height=Math.max(document.body.scrollHeight,document.body.clientHeight);
var c_iframe=document.getElementById("c_iframe");
c_iframe.src=http://www.cr173.com/html/c_iframe.src+"#"+b_width+"|"+b_height;
})();
</script>
最后,agent.html中放入一段js:
<script type="text/javascript">
var b_iframe=window.parent.parent.document.getElementById("Iframe");
var hash_url=window.location.hash;
if(hash_url.indexOf("#")>=0){
var hash_width=hash_url.split("#")[1].split("|")[0]+"px";
var hash_height=hash_url.split("#")[1].split("|")[1]+"px";
b_iframe.style.width=hash_width;
b_iframe.style.height=hash_height;
}
</script>
agent.html从URL中获得宽度值和高度值,并设置iframe的高度和宽度(因为agent.html在www.a.com下,所以操作a.html时不受JavaScript的同源限制)
超级简单的方法,也不用写什么判断浏览器高度、宽度啥的。
下面的两种方法自选其一就行了。一个是放在和iframe同页面的,一个是放在test.html页面的。
注意别放错地方了哦。
下面是其他两种方法:
iframe代码,注意要写ID
<iframe src=http://www.cr173.com/html/"test.html" id="main" width="700" height="300" frameborder="0" scrolling="auto"></iframe>
jquery代码1:
//注意:下面的代码是放在test.html调用
$(window.parent.document).find("#main").load(function(){
var main=$(window.parent.document).find("#main");
var thisheight=$(document).height()+30;
main.height(thisheight);
});
jquery代码2:
//注意:下面的代码是放在和iframe同一个页面调用
$("#main").load(function(){
var mainheight=$(this).contents().find("body").height()+30;
$(this).height(mainheight);
});
第二种有效,不过要注意一点是,增加的JS要写在iframe下面,放在头部是测试没有效果。
测试代码:
<iframe id="mainframe" name="mainframe" marginwidth="0" marginheight="0" src=http://www.cr173.com/html/"/Home/Activitylist" frameborder="0" width="100%" scrolling="no" height="100%"></iframe>
<script type="text/javascript">
//注意:下面的代码是放在和iframe同一个页面调用,放在iframe下面
$("#mainframe").load(function () {
var mainheight=$(this).contents().find("body").height() + 30;
$(this).height(mainheight);
});
</script>
关于iframe 高度设置、iframe 自适应高度方法总结的相关讨论如下:
相关问题:我的iframe嵌套不知道怎么自适应高度。求大神
答:好做,在IFRAM的每个页面中都要加入一个JS,功能就是读取自己身的高度,然后去父框架中设置iframe的height属性就行了 >>详细
相关问题:如何设置iframe高度自适应在跨域情况下的可用方法
答: function resizeCrossDomainIframe(id, other_domain) { var iframe = document.getElementById(id); window.addEventListener('message', function(event) { if (event.origin !== other_domain) return; // only accept messages from the sp... >>详细
相关问题:jquery iframe 自适应高度的方法 高分求,
答:一般调用iframe外部应用页面,还是要遵循本页面设置样式的,比如用户须知的iframe调用! 至于高度自适应,同样可以用css('overflow','hidden'); 希望帮到你了! >>详细
- 评论列表(网友评论仅供网友表达个人看法,并不表明本站同意其观点或证实其描述)
-
