一個HTML頁面可以有一個或多個子框架,這些子框架以<iframe>或<frame>來標記,用來顯
示一個獨立的HTML頁面。本節介紹框架的自我控制及框架之間的相互訪問,例如從一個框架中引用另
一個框架中的JavaScript變量,調用其他框架內的函數,控制另一個框架中表單的行為等。
第一節 框架的引用
在一個HTML 頁面中,所有的框架以集合的形式作為window 對象的屬性提供,例如
window.frames表示該頁面內所有框架的集合,這和表單對象、鏈接對象等類似。不同的是,這些集
合是document的屬性,因此,要引用一個子框架,可以使用如下語法:
window.frames["frameName"]
window.frames.frameName
window.frames[index]
其中,window字樣也可以用self代替或省略,假設frameName為頁面中第一個框架,則以下寫法
是等價的:
window.frames["frameName"]
self.frames["frameName"]
self.frames[0]
frames[0]
frameName
每個框架都對應一個HTML頁面,所以這個框架也是一個獨立的瀏覽器窗口,它具有窗口的所有
性質,對框架的引用也就是對window對象的引用。有了這個window對象,就可以很方便地對其中的
頁面進行操作,例如使用window.document對象向頁面寫入數據、使用window.location屬性來
改變框架內的頁面等。下面分別介紹不同層次框架間的相互引用。
1、父框架到子框架的引用
從父框架引用子框架的方法為:
window.frames["frameName"]
這樣就引用了頁面內名為frameName的子框架,如果要引用子框架內的子框架,事實上,引用
的框架就是window對象,實現方法如下:
window.frames["frameName"].frames["frameName2"]
這樣就很容易引用到了二級子框架,依次類推,可以實現多層框架的引用。
2、子框架到父框架的引用
每個window對象都有一個parent屬性,表示它的父框架。如果該框架已經是頂層框架,則
window.parent還表示該框架本身,例如,先創建一個TestA.html文件,其代碼如下:
<html>
<head><title>父頁面</title></head>
<body>
<form name="formA" id="formA">
<input type="text" name="username" id="username"/>
</form>
<iframe src="TestB.html" width="100%"></iframe>
</body>
</html>
在上面代碼中,定義了一個iframe 框架并把TestB.html 文件放在其中,如果需要在
TestB.html中對TestA.html中的username文本框賦值,就應該在TestB.html中實現如下代碼:
<script type="text/javascript">
var parentWin=window.parent;
parentWin.formA.username.value="javakc";
</script>
3、兄弟框架間的引用
如果兩個框架為同一個框架的子框架,它們稱為兄弟框架,可以通過父框架來實現互相引用,例
如一個頁面包括2個子框架
<frameset rows="30%,70%">
<frame src="left.html" name="frame1"/>
<frame src="main.html" name="frame2"/>
</frameset>
在frame1中可以使用如下語句來引用frame2。
self.parent.frames["frame2"]
4、不同層次框架間的相互引用
框架的層次是針對頂層框架而言的。當層次不同時,只要知道自己所在的層次以及另一個框架所在
49
《Java快車---基礎教程》 www.javakc.com TEL:010-62972039
的層次和名字,利用框架引用的window對象性質,就可以很容易地實現互相訪問,例如:
self.parent.frames["childName"].frames["targetFrameName"]
5、對頂層框架的引用
和parent屬性類似,window對象還有一個top屬性,它表示對頂層框架的引用,可以用來一
個框架自身是否為頂層框架,例如:
top.window.formA.username.value="javakc";
也可以采用下面代碼驗證本框架是否為頂層框架
if(self==top){
//too do
}
對于框架的引用就是對“window”對象的引用,利用window對象的location屬性,可以改變
框架的導航,例如
window.frames[0].location="index.html";
這就是將頁面中的第一個框架的頁面重定向到index.html,利用這個性質,甚至可以使用一條
鏈接來更多的框架,例如:
<frameset rows="30%,70%">
<frame src="left.html" name="frame1"/>
<frame src="main.html" name="frame2"/>
</frameset>
<a href="frame1.location='index.html';frame2.loaction='top.html'">link</a>