Frames : 一个特殊的窗口类型
来源:互联网 发布:windows me 编辑:程序博客网 时间:2024/04/29 10:11
许多初学者在处理 frame 时往往会出现这样或那样的错误,其实,frame 是一个特殊的窗口类型,只要明白了他们之间的关系,可以很容易控制,本文摘译自 JavaScript 2.0-The Complete Reference 一书的英文第二版(仅摘录了对理解 frame 有直接关系的章节),文章详细介绍了 frame ,相信对新手理解 frame 会有很大帮助。
对 window 和 frame 关系的错误理解是web开发者中普遍存在的问题,从 (x) html 和 Javascript 来看,每个窗口中显示的 frame 都能很容易的控制,事实上,当一个 window 有多个 frame , 可以通过 window.frames[] 来实现对每个独立的窗口目标的引用,一些简单却很有用的属性在下表中列举出来:
Window 属性 说明 frames[] 存放当前窗口中所有frame对象的数组。 length 窗口 frame 的数目,和 window.frames.length 等同。 name 当前窗口的名字,自 JavaScript 1.1 起,这个值是可读写的。 parent 对父窗口的引用。 self 对窗口自身的引用。 top 对最高级别窗口的引用,这个值通常和parent一致,除非 frame 中有更多的 frame。 window 另外一个对当前窗口的引用。
想用 Javascript 控制 frame 最主要的是要把各自的名字和他们之间的关系弄清楚,如果你有一个叫 frames.html 的页面,页面代码如下:
HTML:
在这种情况下,当前文档主体可以看作是三个 frame (frame1,frame2, and frame5) 的 parent ,你可以使用下面的方式取得 frame 数目:
Code:
window.frames.length
你如果在三个子 frame 中运行代码,可以用下面的方法 :
Code:
window.parent.frames.length
或者
Code:
parent.frames.length
parent 表示一个窗体的父窗体,也可以用 top 来表示最高级别的窗体,这样可以写成 top.frames.length ,但是需要注意的是:除非你有嵌套 frame ,否则 parent 和 top 通常表示的是一个对象。
访问一个 frame ,可以用 name 或者下标的方式查询 frames 数组,parent.frames[0].name 将会输出第一个 frame 的名字,在我们的例子中就是 frame1,同样,我们也可以用 parent.frame1 或者 parent.frames["frame1"] 来实现相同的操作,记住,一个 frame 就是一个 window,知道这个,就可以使用所有Window 和 Document 的方法。
当理解了 frame 之间的关系,可以很容易的通过 parent.frames[] 操作任何 frame ,假如你有一个简单的框架页面:
HTML:
在 navigation 窗体里面,你可以通过下面的方式设置一个对 content 窗体引用的变量:
Code:
var contentFrame = parent.frames[1]; // 或者使用名称
iframe 是一个需要注意的 frame 变种,用iframe可以让你不使用框架,但是却可以嵌入页面,问题是,我们如何控制这些 iframe ?事实上,我们也可以用 frames[] 的方法,此外,如果你的 iframe 有命名,可以通过 getElementById 来操控,示例如下:
HTML:
对 window 和 frame 关系的错误理解是web开发者中普遍存在的问题,从 (x) html 和 Javascript 来看,每个窗口中显示的 frame 都能很容易的控制,事实上,当一个 window 有多个 frame , 可以通过 window.frames[] 来实现对每个独立的窗口目标的引用,一些简单却很有用的属性在下表中列举出来:
想用 Javascript 控制 frame 最主要的是要把各自的名字和他们之间的关系弄清楚,如果你有一个叫 frames.html 的页面,页面代码如下:
HTML:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Frameset//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-frameset.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <title>FrameSet Test</title> <meta http-equiv="content-type" content="text/html; charset=ISO-8859-1" /> </head> <frameset rows="33%,*,33%"> <frame src="framerelationship.html" name="frame1" id="frame1" /> <frame src="moreframes.html" name="frame2" id="frame2" /> <frame src="framerelationship.html" name="frame5" id="frame5" /> </frameset> </html>
在这种情况下,当前文档主体可以看作是三个 frame (frame1,frame2, and frame5) 的 parent ,你可以使用下面的方式取得 frame 数目:
Code:
window.frames.length
你如果在三个子 frame 中运行代码,可以用下面的方法 :
Code:
window.parent.frames.length
或者
Code:
parent.frames.length
parent 表示一个窗体的父窗体,也可以用 top 来表示最高级别的窗体,这样可以写成 top.frames.length ,但是需要注意的是:除非你有嵌套 frame ,否则 parent 和 top 通常表示的是一个对象。
访问一个 frame ,可以用 name 或者下标的方式查询 frames 数组,parent.frames[0].name 将会输出第一个 frame 的名字,在我们的例子中就是 frame1,同样,我们也可以用 parent.frame1 或者 parent.frames["frame1"] 来实现相同的操作,记住,一个 frame 就是一个 window,知道这个,就可以使用所有Window 和 Document 的方法。
当理解了 frame 之间的关系,可以很容易的通过 parent.frames[] 操作任何 frame ,假如你有一个简单的框架页面:
HTML:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Frameset//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-frameset.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <title>Two Frames</title> <meta http-equiv="content-type" content="text/html; charset=ISO-8859-1" /> </head> <frameset cols="300,*"> <frame src="navigation.html" name="frame1" id="frame1" /> <frame src="content.html" name="frame2" id="frame2" /> </frameset> </html>
在 navigation 窗体里面,你可以通过下面的方式设置一个对 content 窗体引用的变量:
Code:
var contentFrame = parent.frames[1]; // 或者使用名称
iframe 是一个需要注意的 frame 变种,用iframe可以让你不使用框架,但是却可以嵌入页面,问题是,我们如何控制这些 iframe ?事实上,我们也可以用 frames[] 的方法,此外,如果你的 iframe 有命名,可以通过 getElementById 来操控,示例如下:
HTML:
<iframe src="http://www.google.com" name="iframe1" id="iframe1" height="200" width="200"></iframe> <form action="#" method="get"> <input type="button" value="Load by Frames Array" onclick="frames['iframe1'].location='http://www.javascriptref.com';" /> <input type="button" value="Load by DOM" onclick="document.getElementById('iframe1').src='http://www.pint.com';" /> </form>
我尝试进行了比较,一个ASP页面上共有3个Frame:top.aspleft.aspright.asp在top.asp上点击一个连接后,希望根据top.asp传来的参数刷新left.asp和right.asp.给另外两个命名一下left和right在top.asp中。点击的时候激活这个函数:function loads(){top.left.location.href="你要转向的网址";top.right.location.href="你要转向的网址";}
- Frames : 一个特殊的窗口类型
- 多窗口页面(Frames)
- 多窗口页面(Frames)
- frames分割窗口
- 多窗口页面(Frames)
- 多窗口 frames
- 理解Emacs的缓冲区(Buffers)、窗口(Windows)和框架(Frames)
- Emacs的缓冲区(Buffers)、窗口(Windows)和框架(Frames)
- Emacs的缓冲区(Buffers)、窗口(Windows)和框架(Frames)
- Emacs的缓冲区(Buffers)、窗口(Windows)和框架(Frames)
- Emacs的缓冲区(Buffers)、窗口(Windows)和框架(Frames)
- HTML---多窗口页面(Frames)
- HTML-多窗口页面(Frames)
- procedure of object(一个特殊的指针类型)
- frames的使用
- frames
- Frames
- HTML教程(10)-多窗口页面(Frames)
- 经典的PHP&Form入门例子
- 教你如何使用maxscript调试器
- 解决Oracel导入dmp文件错误问题
- 应用需要数据库支持,而且很重要!
- XML的最基本的用法[SQL 2005]
- Frames : 一个特殊的窗口类型
- C#的四种排序算法
- sql2000分步式分区视图,2005的分区表[有部份是来自csdn视频教材]
- 隐藏IE横向滚动条
- 构建理想的模块自测结构
- asp 中 win2k3+IIS6.0不能上传超过200K的问题解决方案
- 软件测试术语中英文对照(部分)
- ASP.NET控件的一些属性.....
- C#中调用API