frameset高度

今天调节界面的时候发现一个问题,
我需要iframe高度自适应
在iframe 加载完成的时候 调用方法读取子界面的高度然后设这iframe高度预期同步
并且为了在js中动态添加节点导致子界面高度变化,而同步调节iframe高度
这添加定时器,定时刷新iframe高度
$("#mainFrame").load(function(){
window.setInterval(showheight, 100);

});
function showheight(){
var body = mainFrame.window.document.body;
var iframHeight;
iframHeight= mainFrame.window.document.body.scrollHeight;
$("#mainFrame").height(iframHeight);

}

但这个处理只调节了部分界面 还有部分界面调节失败
查看iframe的子页面发现 该jsp文件中不含body 而是有frameset构成

初步设想解决方案是 在子界面中添加上面的方法,刷新frameset高度。然后父界面读取frameset高度刷新iframe高度。
结果实现的时候还是失败了

百度之后发现frameset是无法设置高度的

因此这种情况只能通过在父界面中获取子界面的frameset中引入的子界面body高度问题

function showheight(){
var body = mainFrame.window.document.body;
var iframHeight;
if(checkBodyisFrameset(body)){
iframHeight = getFramesetHeight(mainFrame.window);
}else{
iframHeight= mainFrame.window.document.body.scrollHeight;
}
$("#mainFrame").height(iframHeight);
var height2 = $(window).height() - $("#header").height()-$("#banner").height();
//- $("#footer").height();
if($("#mainFrame").height()<height2){
$("#mainFrame").height(height2);
}
}
function checkBodyisFrameset(body){
var isframeset = $(body).is("frameset ");
return isframeset;
}
function getFramesetHeight(win){
//frameset中包含两个纵向frame 因此获取者两个frame中的子页面高度 比较大小 返回较大高度。如果是包含两个横向frame则需要两个frame子界面的高度相加返回。
var leftHeight = win.frames[0].window.document.body.scrollHeight;
var rightHeight = win.frames[1].window.document.body.scrollHeight;
if(leftHeight>rightHeight){
return leftHeight;
}else{
return rightHeight;
}
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值