通过iframe 嵌套页面的宽高自适应问题

a.html页面中嵌套b.html ,如下

<iframe src="b.html" id="bbb"  width="200" height="36"   frameborder="0" scrolling="auto"></iframe>

由于b.html页面中的DOM节点是动态的,宽高不确定;故iframe的宽高不能定死。
本人最初的方法是在iframe外面嵌套一个div ,iframe的大小是div大小是100%的关系。然后通过控制嵌套的div 宽高去实现;结果,发现不行。因为你看到的div,已经不是这个div了;里面都是iframe中的元素;你动态操作的都是iframe中的元素。故只能换个
那么只剩下设置iframe的宽高动态了;
故应该在b.html页面通过window.parent进行跨域,去操作iframe的大小;或者在a.html页面通过window.frames[0]或 $(“#bbb”).contents()进行跨域,去操作子页面。
实际代码如下:在b.html 中:

var main = $(window.parent.document).find("#bbb");
    main.toggleClass("www");

www是用来设置宽高的;
或者在a.html中:

$("#main").load(function(){
var mainheight = $(this).contents().find("body").height();
$(this).height(mainheight);

特别注意,上述方法需要通过服务器端进行,纯静态页面不可以!!

顺道普及下:
Iframe易于嵌套及管理页面,但经常遇到跨域、父子页面访问问题。
对于子页面访问父页面可以兼容性地通过window.Top或window.Parent或window.frameElement等操作。
对于子页面访问父页面,可以contentWindow或contentDocument;例如

var bHeight = iframe.contentWindow.document.body.scrollHeight;
或者 var haha=document.getElementById("iframeName").contentWindow;
  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值