2019年4月10日 星期三

(15)window物件 中篇

遠端遙控
遙控視窗就如同電視機的遙控器一般,點選遙控視窗(電視遙控器按鈕)中的項目就可以控制主頁面視窗的內容(電視機頻道畫面),要建立遠端操控的主從式架構,必須建立兩個視窗:主頁面視窗與遠端遙控視窗。

遠端遙控視窗是由主頁面視窗所建立,也就是說主頁面視窗是「父親」,而遠端遙控視窗則是「兒子」,遠端遙控視窗的建立有兩種時機,一種是在主頁面視窗產生時同時建立,另一種則是當瀏覽者在主頁面視窗點選鏈結時才建立,但是,使用遙控式主從層式架構是在主頁面視窗產生時立即提供遠端遙控視窗, 而不須等待瀏覽者自己點選鏈結才建立,否則就失去使用主從式架構的意義了。
  1. <script language="JavaScript">
  2. //建立遙控視窗的函式
  3. function openchoose()
  4. {
  5. newwindw=window.open("5-8-1.htm","","width=100,height=150")
  6. }
  7. </script>
在上列的函式敘述中代表openchoose()函式被呼叫時,將開啟一個寬100個像素、高150個像素,但是沒有工具列、網址欄位或是狀態列的新瀏覽器視窗,這個新視窗也不能調整大小。



為了在主頁面視窗網頁載入時立即提供遠端遙控視窗,所以我們必須在<BODY>標籤內加入OnLoad事件處理器來呼叫建立遠端遙控視窗的函式:
  1. <!-- 主網頁視窗網頁載入時建立遙控視窗 -->
  2. <BODY OnLoad="openchoose()">
(主頁面視窗)
  1. <HTML>
  2. <HEAD><TITLE>遠端遙控</TITLE></HEAD>
  3. <script language="JavaScript">
  4. //建立遙控視窗的函式
  5. function openchoose()
  6. {
  7. newwindw=window.open("5-8-1.htm","","width=100,height=150")
  8. }
  9. </script>
  10. <!-- 主網頁視窗網頁載入時建立遙控視窗 -->
  11. <BODY OnLoad="openchoose()">
  12. 我是主網頁視窗<br>
  13. 請在遙控視窗中選擇你要參觀的網站
  14. </BODY>
  15. </HTML>
複製代碼
遠端遙控視窗的內容
在遠端遙控視窗的網頁內容中含有實際的「遠端遙控功能」程式碼,在此網頁文件中我們放置著一般的HTML超鏈結,不過在點選這些超鏈結的時候,我們轉向連結的動作並不是發生在遠單遙控視窗內,而是在建立遠端遙控視窗的主頁面視窗中:
  1. <a href="javascript:going('http://www.twbts.com')">
  2. 麻辣學園
  3. </a><br>
  4. <a href="javascript:going('http://dgr.twbts.com')">
  5. 築夢學園 
  6. </a> <br>
  7. <a href="javascript:going('http://office.twbts.com')"> 
  8. office學園 
  9. </a>
這些HTML超鏈結是使用JavaScript虛擬協定來呼叫going()函式,並在呼叫函式時給予超鏈結時轉向時主頁面視窗的連結網址參數。
  1. <script language="JavaScript">
  2. //轉向主頁面視窗連結函式
  3. function going(address)
  4. {
  5. window.opener.location=address
  6. }
  7. </script>
複製代碼
請注意:如果由瀏覽器視窗中另外建立一個新視窗,則此瀏覽器視窗就成為了新視窗的opener(開啟/建立者),因此,我們在呼叫函式時給予超鏈結時轉向時就必須是:
  1. window.opener.location=”URL”
而不是:
  1. window.location=”URL”
複製代碼
否則,呼叫函式時給予超鏈結時轉向時將會是新視窗本身,而非建立新視窗的瀏覽器視窗!

(遠端遙控視窗)
  1. <HTML>
  2. <HEAD><TITLE>遠端遙控</TITLE></HEAD>
  3. <script language="JavaScript">
  4. //轉向主頁面視窗連結函式
  5. function going(address)
  6. {
  7. window.opener.location=address
  8. }
  9. </script>

  10. <BODY>
  11. <a href="javascript:going('http://www.twbts.com')">
  12. 麻辣學園
  13. </a><br>
  14. <a href="javascript:going('http://dgr.twbts.com')">
  15. 築夢學園 
  16. </a><br> 
  17. <a href="javascript:going('http://office.twbts.com')"> 
  18. office學園 
  19. </a> 
  20. </BODY> 
  21. </HTML>



關閉瀏覽器視窗
我們可以利用JavaScrip中window物件的open()方法建立新瀏覽器視窗,可以建立視窗,相對的就可以關閉視窗,要利用JavaScript來關閉視窗,同樣必須使用window物件的方法,那就是close()方法:
close()方法標準格式
  1. window.close()
不過當我們使用close()方法來關閉瀏覽器時會先出現一個『詢問』對話視窗,需要經過我們再次確認才會關閉視窗:
  1. <HTML>
  2. <HEAD><TITLE>close()方法</TITLE></HEAD>
  3. <script language="JavaScript">
  4. //關閉視窗的函式
  5. function closewindow()
  6. {
  7. window.close()
  8. }
  9. </script>
  10. <BODY>
  11. <form>
  12. <!-- 按下表單按鈕則呼叫關閉視窗的JavaScript函式 -->
  13. <input type="button" value="按下我將會關閉目前視窗" OnClick="closewindow()">
  14. </form>
  15. </BODY>
  16. </HTML>
怎會這樣?還會出現一個『詢問』對話視窗真是令人討厭ㄚ。因為這個瀏覽視窗並不是由JavaScript所建立開啟出來的,因此在我們使用close()方法想要把這個瀏覽視窗關閉就會出現『詢問』對話視窗,如果我們利用JavaScript來建立一個新視窗,在新瀏覽器視窗內,我們同樣使用window()方法關閉視窗時卻不會出現『詢問』對話視窗:

(開新視窗的網頁原始碼)
  1. <HTML>
  2. <HEAD><TITLE>close()方法</TITLE></HEAD>
  3. <BODY>
  4. <script language="JavaScript">
  5. //開新視窗函式
  6. function openNew()
  7. {
  8. newwindw=window.open("5-10-1.htm")
  9. }
  10. </script>
  11. <a href="javascript:openNew()">點選我將開啟新視窗</a>
  12. </BODY>
  13. </HTML>
(關閉視窗的網頁原始碼)
  1. <HTML>
  2. <HEAD><TITLE>close()方法</TITLE></HEAD>
  3. <BODY>
  4. <!-- 按下鏈結則直接呼叫close()方法 -->
  5. <a href="javascript:window.close()">關閉目前視窗</a>
  6. </BODY>
  7. </HTML>

沒有留言:

張貼留言