iframe 自适应高度

来源:互联网 发布:阿里云幕布原图下载 编辑:程序博客网 时间:2024/06/07 15:11

1. 相同域的 iframe 高度自适应,很简单,直接获取iframe的中body的scrollHeight,然后设置iframe的css中witdh。

主页面获取子iframe的方法,参考另一篇文章


2. 不同域的iframe高度自适应

跨域的时候,由于js的同源策略,父页面内的js不能获取到iframe页面的高度。需要一个页面来做代理。
方法如下:假设www.a.com下的一个页面a.html要包含www.b.com下的一个页面b.html。
我们使用www.a.com下的另一个页面agentB.html来做代理,通过它获取iframe页面的高度,并设定iframe元素的高度。

a.html中包含iframe:

<iframe src="http://www.b.com/b.html" id="Iframe" frameborder="0" scrolling="no" style="border:0px;"></iframe>

$("#Iframe").load(function(){    var ifr = $("<iframe></iframe>");    ifr.attr("name", "agentB");    ifr.attr("src", "http://www.b.com/agentB.html");    ifr.css("display", "none");    $("body").append(ifr);});
agentB.html文件:获取b.html的高度,将高度赋值到src 里面
var height = parent.window.ifr.document.body.scrollHeight || parent.window.ifr.document.documentElement.scrollHeight;var ifr = $("<iframe></iframe>");ifr.attr("name", "agentA");ifr.attr("src", "www.a.com/agentA.html#"+height);ifr.css("display", "none");$("body").append(ifr);
agentA.html文件,获取url中hash的值,设置 id="Iframe"的高度
var param = window.location.hash;   var height = param.substr(1);
$(parent.parent.window.document.getElementById("ifrid")).css({"height":height+"px"});




0 0
原创粉丝点击