當你建立一個架構結構的文檔時,<FRAME>標記的NAME屬性定義了每一個架構的名字,如下:
<FRAMESET>
<FRAME NAME="left" SRC="toolbar.html">
<FRAME NAME="right" SRC="index.html">
</FRAMESET>
在例子中,文檔包含2個架構:left和right。在文檔toolbar.html中,連結代碼就象下面的一樣:
<A HREF="about.html" TARGET="right">About Us</A>
<A HREF="feedback.html" TARGET="right">Feedback</A>
注意, <FORM>標記同樣支援TARGET屬性,它定義了響應表單的目標視窗。而<BAEE>標記則指明了文檔中所有連結的通用預設目標視窗:
<BASE TARGET="right">
上面的標記定義了頁面中所有元素的目標位置。以下的HTML元素支援target屬性:<A>、<AREA>、<FORM>。
在實際應用中,<BASE>元素必須出現在文檔的HEAD標記間,要先於任何指向外部資源的元素前。如果在文檔中指定了<BASE>標記,那麼連結將不再遵循預設的target位置,而是被明確地指向另外一個不同的target位置:
<HEAD>
<BASE TARGET="right">
</HEAD>
<BODY>
<A HREF="table.html" TARGET="_self">Table of Contents</A>
<A HREF="about.html">About Us</A>
<A HREF="feedback.html">Feedback</A>
</BODY>
如上所見,第1個連結的target是 "_self" (帶有一個底線),這表示當點擊這個連結時,新文檔會在當前活動的視窗中開啟。下表列舉了HTML中一些特殊的target位置標識:
Target |
含義 |
_blank |
在一個新的空視窗中裝載文檔,新視窗沒有命名。 |
_parent |
在連結所在視窗的直接父視窗中裝載文檔。 |
_search |
在瀏覽器的搜尋區裝載文檔,注意,這個功能只在Internet Explorer 5 或者更高版本中適用。 |
_self |
在連結所在的視窗中裝載文檔。 |
_top |
在最上層視窗中裝載文檔。 |
現在我們瞭解了架構名字,下面將它們與視窗一起工作。當定義target為 "_blank"時,a一個新視窗就會彈出來。比如,如果想讓一個連結在新視窗中開啟,請使用下面的代碼:
<A HREF="newpage.html" TARGET="_blank">A New Page</A>
新視窗沒有命名,換言之,它不能被其他元素的 TARGET 屬性所引用。但是當我們使用一個標準的target名字時,會發生什麼呢?請看下面的定義:
<A HREF="newtip.html" TARGET="tip">A New Tip</A>
在這種情況下,我們為新視窗提供了一個特殊的名字。 新視窗的名字為 "tip", 因此任何連結或者表單,只要定義了 TARGET="tip", 就會在同一視窗中裝載頁面。如果沒有架構或者視窗匹配指定的target,那麼點選連結後將在新視窗中開啟。看看下面的例子:
<A HREF="http://www.ccidnet.com/" TARGET="_blank">CCIDNET</A>
<A HREF="http://www.ccidnet.com/tech/" TARGET="_blank">技術天地</A>
看看產生的效果:
CCIDNET、技術天地
點擊第一個連結,將在新視窗中開啟文檔。點擊第二個連結,也將產生一個新視窗。如果再次點選連結,新視窗仍將開啟。如你所見,連結每一次被點擊都會產生一個新視窗。讓我們再試一試下面的例子:
<A HREF="http://www.ccidnet.com/" TARGET="main">CCIDNET</A>
<A HREF="http://www.ccidnet.com/tech/" TARGET="main">技術天地</A>
效果如下:
CCIDNET、技術天地
點擊第一個連結時,產生一個新視窗。接著點擊第二個連結,新文檔將出現在剛剛開啟的視窗中。新視窗定義了明確的名字,叫做 "main", 所以任何指定了 TARGET="main" 的連結或者表單都會在那個視窗被裝載。
名字的屬性
藉助JavaScript,我們能夠通過視窗的名字屬性探索視窗的名字(適用於IE3+, N2+)。同樣,我們能夠設定一個架構或者視窗的名字屬性(適用於IE3+, N3+)。來看看下面的HTML文檔(showname.html):
<HTML>
<HEAD><TITLE>Display Name</TITLE></HEAD>
<BODY>
<SCRIPT LANGUAGE="JavaScript">
<!--
alert('The name of this window is: "' + window.name + '"');
// -->
</SCRIPT>
</BODY>
</HTML>
再看看下面的連結:
<A HREF="showname.html" TARGET="_blank">A New Window</A>
<A HREF="showname.html" TARGET="first">First Window</A>
<A HREF="showname.html" TARGET="second">Second Window</A>
<A HREF="showname.html" TARGET="third">Third Window</A>
文檔showname.html包含了一個指令碼程式,它負責在一個alert對話方塊中顯示視窗的名字。
name 屬性屬於 window 對象。它可以被任何window對象使用,包括架構。例如,下面的語句設定了一個架構視窗的名字:
parent.frames[1].name = "right";
當操作架構時, 訪問不同層視窗是很簡單的。如果想參閱更多細節,請訪問 Window References 。
HTML不能給當前視窗指派名字。就是說,在當前頁面不可能通過HTML代碼來設定當前視窗的名字。要實現這個目的,只有一個方法,就是給 window.name 屬性分配值。下面來試一試,看看如下的代碼,它建立了一個簡單按鈕,點擊後設定當前視窗的名字:
<FORM>
<INPUT TYPE="button" VALUE="Set Name to myWin" onClick="window.name = 'myWin'">
</FORM>
點擊按鈕後,當前視窗的名字就改變為 "myWin", 除非指派其他的值,它會一直保持。 我們可以在其他視窗中包含一些連結,並定義他們的target位置為myWin,就是 TARGET="myWin" 。
如果前面你已經設定了當前視窗的名字為myWin,那麼連結將在當前視窗開啟。下面是新視窗中的代碼:
<A HREF="http://www.docjs.com/" TARGET="myWin">Home</A>
<A HREF="http://www.docjs.com/tips/" TARGET="myWin">Recent Tips</A>
方便起見,我們給出能將當前視窗的名字設定為空白""的按鈕的源碼:
<form>
<input onClick="window.name = ''" type=button value="Reset Name" name="button2">
</form>
你要注意,不要給2個不同的視窗分配同一個名字。如果2個視窗被分配了同一個名字,那麼只有一個視窗被關聯,另外一個就將被忽視。