如何动态的改变Frame的大小
当我们在做比较友善的客户界面时,有可能要改变Frame的大小。
如果你去过微软的http://msdn.microsoft.com/downloads/default.asp,
你会发现微软在网页上加了显示和关闭左边Frame的功能,给人的感觉是完全
服务于用户,那如何实现动态改变Frame的大小呢?

下面是典型的一个Frameset写法:

<FRAMESET ID=Fr1 COLS="150,*">
  <FRAME SRC="left.html">
  <FRAMESET ID=Fr2 ROWS="150,*">
    <FRAME SRC="top.html">
    <FRAME SRC="bot.html">
  </FRAMESET>
</FRAMESET>

在一开始,我们有可能把页面作最清楚的显示,但当用户要有最大空间看某个FRAME时如bot.html时,我们
总不能让用户自己拖动两个框架之间的分割条来改变框架大小吧(假如没有指定框架的NORESIZE属性)。
应该向微软一样提供一个按钮来让程序实现。

下面我说明如何实现的一个简单方法:

上面这段代码我们是放在BODY区,因此我们可以用这样来引用它:document.body
这样framesets的所有的属性都可以通过document.body来引用,包括cols和rows.

因而我们可以通过设定document.body.cols和document.body.rows的值来改变FRAMESET的COLS和ROWS,
从而达到动态改变FRAME大小的目的。

parent.document.body.cols = "300,*";

当然我们同样有可能要设定内嵌的FRAMESET 如Fr2的ROWS属性,这时我们可以给FRAMESET指定id,这样
我们可以这样引用:
parent.Fr1.COLS="200,*"
parent.Fr2.ROWS="100,*"

下面我给出实现代码片段:

<HTML>
<HEAD>
<TITLE>frame resize</TITLE>
<SCRIPT LANGUAGE="JavaScript1.2">
<!--
IE4 = (document.all);
if (IE4){
origLeft = lFr = 150;
origTop = tFr = 150;
function rs1(){
parent.document.body.cols = "300,*";
setTimeout("parent.document.body.cols = '150,*'",3000);
}
function sizeFrame() {
lastLeft = lFr;
lastTop = tFr;
lFr = "500";
tFr = "200";
bWFr = "*";
bHFr = "*";
parent.Fr1.cols=lFr+","+bWFr;
parent.Fr2.rows=tFr+","+bHFr;
}

//-->
</SCRIPT>
</HEAD>
<BODY >

</BODY>
</HTML>