Chinaunix首页 | 论坛 | 博客
  • 博客访问: 210399
  • 博文数量: 45
  • 博客积分: 0
  • 博客等级: 民兵
  • 技术积分: 444
  • 用 户 组: 普通用户
  • 注册时间: 2014-03-11 12:23
文章分类

全部博文(45)

文章存档

2017年(1)

2016年(14)

2014年(30)

我的朋友

分类: jQuery

2016-11-11 12:01:41


文章目录

自适应高度,其实就是设置的高度,使其等于内嵌网页的高度,从而看不出来滚动条和嵌套痕迹。对于用户体验和网站美观起着重要作用。

如果内容是固定的,那么我们可以通过来给它直接定义一个高度,同样可以实现上面的需求。当内容是未知或者是变化的时候。这个时候又有几种情况了。

内容未知,高度可预测

这个时候,我们可以给它添加一个默认的CSS的min-height值,然后同时使用改变高度。常用的兼容有:

 // document.domain = "caibaojian.com";
function setIframeHeight(iframe) {
if (iframe) {
var iframeWin = iframe.contentWindow || iframe.contentDocument.parentWindow;
if (iframeWin.document.body) {
iframe.height = iframeWin.document.documentElement.scrollHeight || iframeWin.document.body.scrollHeight;
}
}
};

window.onload = function () {
setIframeHeight(document.getElementById('external-frame'));
}; 

演示地址

(如果在同个顶级域名下,不同子域名之间互通信息,设置document.domain="caibaojian.com"

只要修改以上的iframe的ID即可了。或者你可以直接在iframe里面写代码,我们一般为了不污染代码,建议使用上面的代码。

 

多个iframe的情况下

 

针对知道的iframe的ID调用

function iframeAutoFit(iframeObj){
setTimeout(function(){if(!iframeObj) return;iframeObj.height=(iframeObj.Document?iframeObj.Document.body.scrollHeight:iframeObj.contentDocument.body.offsetHeight);},200)
} 

内容宽度变化的iframe高度自适应


 

打开调试运行窗口可以看到运行。

跨域下的iframe自适应高度

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

a.html中包含iframe:

 

在c.html中加入如下代码:


 

最后,agent.html中放入一段js:

 

agent.html从URL中获得宽度值和高度值,并设置iframe的高度和宽度(因为agent.html在下,所以操作a.html时不受的同源限制)

阅读(3898) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~