一、在導(dǎo)航窗口點(diǎn)擊鏈接,在另一窗口打開網(wǎng)頁

現(xiàn)有一分幀頁面如上圖所示的,A窗口是網(wǎng)站logo及廣告,B窗口是導(dǎo)航欄,C是顯示頁面的窗口。該分幀頁面的源代碼為:
| <frameset rows="20%,*"> <frame name="topFrame" scrolling="NO" noresize src="toppage.htm" > <frameset cols="18%,*"> <frame name="leftFrame" noresize src="leftpage.htm"> <frame name="mainFrame" src="mainpage.htm"> </frameset> </frameset> |
若要求在B窗口中的鏈接頁面(test.htm)在C窗口中打開,那么B窗口中的鏈接應(yīng)這樣寫:<a herf="test.htm" target="mailFrame">此鏈接的頁面在C窗口中打開</a>,在這里起關(guān)鍵作用的是<A>標(biāo)記中的target參數(shù),你想在那個窗口中打開網(wǎng)頁,就在Target參數(shù)中設(shè)置那個窗口的名稱。
二、在B窗口中按下一個按鈕,在C窗口中寫一行字
本例的頁面格式與上例相同,完成后的效果是這樣的:按下B窗口中“在C窗口寫字”的按鈕后,在C窗口中就出現(xiàn)一行文字“嗨!你好!這是通過B窗口控制而寫的字?!薄7謳撁娴拇a及每個窗口中的網(wǎng)頁文件與上例相同。
制作方法:
1、 在C窗口網(wǎng)頁(mainpage.htm)的源代碼<head>與</head>之間插入下面這段Javascript程序:
| <script language="Javascript"> <!-- function htest(){ document.write("嗨!你好!這是通過B窗口控制而寫的字。") } --> </script> |
這段程序的作用是在當(dāng)前窗口寫上一段文字。
2、那么如何在B窗口中調(diào)用C窗口中的程序呢?先看B窗口中“在C窗口中寫字”這個按鈕的源代碼:
| <input type="button" value="在C窗口中寫字" onclick="parent.mainFrame.htest()"> |
在這段代碼中,關(guān)鍵是代碼“parent.mainFrame”,這里引入一個新的概念―窗口結(jié)構(gòu)關(guān)系,也就是在多窗口頁面中,各窗口之間的關(guān)系是以什么原則來確定的。窗口關(guān)系的確定原則是:當(dāng)前窗口分割出來的窗口為當(dāng)前窗口的“子窗口”(children),那么當(dāng)前窗口就是分割出來窗口的“父窗口”(parent)。如本例中各窗口的關(guān)系如下:

從上表可得知,“瀏覽器窗口”是“topFrame”和“下部窗口”的“父窗口”,而下部窗口又是“l(fā)eftFrame”和“mainFrame”兩個窗口的“父窗口”。兩個窗口之間的聯(lián)系必須通過它們的父窗口才能進(jìn)行,所以本例中要調(diào)用C窗口中網(wǎng)頁上的“htest()”很顯然是通過C與B的parent再到mainFrame,然后調(diào)用htest()程序。
那么若C窗口中向B窗口中寫字的代碼就是這樣的了: onclick="parent.leftFrame.htest()";那么,在A窗口中要向C窗口中寫一段文字的代碼你知道怎樣寫嗎?對了,就是這樣:onclick="grandchildren.mainFrame.htest()"。
從上面的例子中可看出,在各窗口之間進(jìn)行交互信息,關(guān)鍵的問題是要搞清楚窗口與窗口之間的關(guān)系,其它的操作就比較簡單了。
新聞熱點(diǎn)
疑難解答