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;
}
}

猜你喜欢

转载自15757126299.iteye.com/blog/2287482