用JavaScript按需改变网页框架的大小

 网页用到iframe来嵌套页面,总觉得iframe那个滚动条很是烦人,于是要想个办法来根据载入的页面大小动态改变iframe的宽度和高度。页面是这样的:
<table>
<tr><td><div id="leftMenu"><!-- 左边的菜单 --></div></td>
<td id="frameContainer" ><iframe scrolling="no" frameborder="no" name="main"></td></tr>
</table>

设想是让iframe里面的页面去改变父窗口的iframe的高和宽。</p><p>以下是第一次尝试:

function dyjustifyframe()
{
var o =window.parent.document.getElementsByName("main")[0];
o.height= document.body.scrollHeight;
o.width = document.body.scrollWidth;
}

把function dyjustifyframe()放在iframe中嵌套的子页面里,让子页面的body onLoad="dyjustifyframe()"。但是iframe并没有height和width属性,所以上面不能这样写。于是找到第二个方法。用修改 iframe 上级的table的大小来间接改变其大小。先给iframe加上

style="width:100%;height:100%"
使其随着外面table的大小改变而改变。于是把 dyjustifyframe()改成:
function dyjustifyframe()
{
var o=window.parent.document.getElementById("frameContainer");
if (o)
{
o.height = document.body.scrollHeight;
o.width = document.body.scrollWidth;
}
}

上面的代码在ie中没问题,但在ff中调试时发现子页面的长度超出屏幕的话scrollHeight就只能变大不能变小,所以如果从一个长页面转到一个短页面的话父页面的长度不会改变。所以还需要修改一下。

function dyjustifyframe()
{
var o= window.parent.document.getElementById("frameContainer");
if (o)
{
if (navigator.appName == "Netscape")
{
o.height = document.body.offsetHeight + 40;
o.width = document.body.offsetWidth + 20;
}
else
{
o.height = document.body.scrollHeight;
o.width = document.body.scrollWidth;
}
}
}

要确保显示正常,还需要保证 frameContainer和leftMenu外面的td的大小没被设定,此外body的height必须是默认的auto,如果body是100%就会使代码失效

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值