|
如何动态的改变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> |