Div内嵌iframe及自适应实现

今天在逛网页时,看见一个div内嵌iframe的设计,父文档的大小是随着内嵌frame的变化而自适应的。,这才意识到以前对frame的接触太少了,看见这个都大惊小怪的。于是今天就给自己留了个小作业,写一写高宽度自适应。

代码如下。

要特别注意的有,获取子html frame的contentDocument等同于contentWindow.getDocument.

2.chrome里面是会报错的,该段代码。解决方案有两个,要么在Firefox里面测试,要么把本段代码放进服务器上。错误

原因很简单,跨页面的安全问题。

<!DOCTYPE html>
<html>
<head>
	<title>div嵌套iframe自适应</title>
	<meta charset="utf-8">
</head>
<body>
<div>
	<iframe src="localStorage.html" id="ifr"></iframe>
</div>
<script type="text/javascript">
	function calHeight(doc)
{
	var cHeight=Math.max(doc.body.clientHeight,doc.documentElement.clientHeight);//documentElement返回文档的根元素
	var sHeight=Math.max(doc.body.scrollHeight,doc.documentElement.scrollHeight);
	var finalHeight=Math.max(sHeight,cHeight);
	return finalHeight;
}
function calWidth(doc){
	var cWidth=Math.max(doc.body.clientWidth,doc.documentElement.clientWidth);
	var sWidth=Math.max(doc.body.scrollWidth,doc.documentElement.scrollWidth);
	var width=Math.max(cWidth,sWidth);
	return width;
}

//1. 取iframe内的文档对象,标准浏览器使用contentDocument属性,IE低版本(IE6,7,8)使用document属性。

//2. calcPageHeight函数计算页面的实际高度,标准浏览器使用document.documentElement,低版本IE使用document.body,默认取clientHeight,出现滚动条的取scrollHeight,最后取两个值中最大的。
var ifr=document.getElementById('ifr');
ifr.οnlοad=function(){
	var iDoc=ifr.contentDocument;//此时报错无法获取子类文档
	var height=calHeight(iDoc);
	var width=calWidth(iDoc);
	ifr.style.height=height+'px';
	ifr.style.width=width+'px';
}
</script>
</body>
</html>


  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值