Board logo

標題: [教學] (教學第23篇)系統資訊 上篇 [打印本頁]

作者: 小誌    時間: 2010-5-19 00:25     標題: (教學第23篇)系統資訊 上篇

JavaScript是駭客的工具!這可不是小誌在危言聳聽,因為JavaScript程式是夾帶在網頁中,當網頁下載到瀏覽者的瀏覽器中才會開始執行,因此,瀏覽者的相關資訊是可被JavaScript程式所擷取的,一般來說,JavaScript程式的「駭」人威力並不像可執行檔(*.exe,*.com)那樣的驚人,不過,在有心人士的眼中仍然是一個非常好的「駭」人工具。

Script (文稿) ,是由一群可以在網頁伺服器(Server)或客戶端(Client)瀏覽器執行的指令所組合而成,例如VBScript或JavaScript。 VBScript 與 JavaScript 都是所謂的:網頁應用程式語言,但是這些由JavaScript 或 VBScript 所完成的網頁程式並不需要透過模擬網路伺服器的機制來開啟,因為瀏覽器本身就具有執行這些網頁應用程式的能力,也正因為如此,當這些Script隨著網頁下載到瀏覽器後,便可對瀏覽者的機器系統資料加以分析。

瀏覽器物件
在目前的網路世界中有兩大瀏覽器家族,一為Microsoft(微軟)家族的『Internet Explorer』,另一為美國網景公司的『Netscape Navigator』,這兩大家族的瀏覽器,雖然都支援JavaScript程式的執行,但是支援程度都各不相同,因而造成我們設計JavaScript程式的盲點,同一支JavaScript或許在某家族的瀏覽器中可正常執行無誤,但不代表在另一家族的瀏覽器中也可以正常無誤的執行。因此,我們必須正確地獲知瀏覽者所使用的瀏覽器,並依其瀏覽器的不同,給予不同的JavaScript程式。

要正確地獲知瀏覽者所使用的瀏覽器種類與瀏覽器版本,可以利用JavaScript所提供的瀏覽器物件『navigator』,透過瀏覽器物件的屬性,我們將可以獲得許多瀏覽者的系統資訊:

屬性

作用

navigator.appName

瀏覽者的瀏覽器名稱

navigator.appVersion

瀏覽者的瀏覽器版本與作業系統

navigator.userAgen

瀏覽者的瀏覽器名稱、版本與作業系統


作者: 小誌    時間: 2010-5-19 00:27

瀏覽器名稱
當我們使用瀏覽器物件『navigator』的「appName」屬性時,將可以獲知瀏覽者目前所使用的瀏覽器名稱,當瀏覽者所使用的瀏覽器為Internet Explorer(IE)時,則「appName」屬性值為「Microsoft Internet Explorer」,而瀏覽者所使用的瀏覽器為Netscape Navigator時,則「appName」屬性值為「Netscape」。


實作學習:
當你參觀別人的網站時,常可見到網頁中寫著:「你使用的瀏覽器是…」,有沒有嚇到呢?其實,這並沒有什麼技巧性,只是單純地取得『navigator』的「appName」屬性值,並利用document物件的write()方法將這個「appName」屬性值輸出到網頁中而已!
  1. <HTML>
  2. <HEAD>
  3. <TITLE>瀏覽器名稱</TITLE>
  4. </HEAD>
  5. <BODY>
  6. <SCRIPT Language="JavaScript">
  7. mybrowser=navigator.appName
  8. document.write("你使用的瀏覽器是"+mybrowser)
  9. </SCRIPT>
  10. </BODY>
  11. </HTML>
複製代碼
[attach]698[/attach]
作者: 小誌    時間: 2010-5-19 00:28

瀏覽器版本
「駭」到瀏覽者所使用的瀏覽器名稱不過癮,我們再來駭瀏覽者所使用的瀏覽器版本。使用瀏覽器物件『navigator』的「appVersion」屬性時,將可以獲知瀏覽者目前所使用的瀏覽器版本,與瀏覽者目前所使用的作業系統。


實作學習:
使用瀏覽器物件『navigator』的「appVersion」屬性,獲知瀏覽者目前所使用的瀏覽器版本,與瀏覽者目前所使用的作業系統。
  1. <HTML>
  2. <HEAD>
  3. <TITLE>瀏覽器版本</TITLE>
  4. </HEAD>
  5. <BODY>
  6. <SCRIPT Language="JavaScript">
  7. mybrowser=navigator.appVersion
  8. document.write("你使用的瀏覽器版本與作業系統是"+mybrowser)
  9. </SCRIPT>
  10. </BODY>
  11. </HTML>
複製代碼
[attach]699[/attach]


實作學習:
「瀏覽本站最佳瀏覽器為IE5.0」這句話,你也常在人家的網頁中看到吧!所以,在偵測瀏覽者瀏覽器的同時,還可以更進一步的建議瀏覽者更換它的瀏覽器來符合我們網站中的最佳瀏覽環境。
  1. <HTML>
  2. <HEAD>
  3. <TITLE>最佳瀏覽器版本</TITLE>
  4. </HEAD>
  5. <BODY>
  6. <SCRIPT Language="JavaScript">
  7. myName=navigator.appName
  8. myVer=parseInt(navigator.appVersion)
  9. if (myName=="Netscape" && myVer==3)
  10. {msg="Netscape3"}
  11. else if (myName=="Netscape" && myVer==4)
  12. {msg="Netscape4"}
  13. else if (myName=="Netscape" && myVer==5)
  14. {msg="Netscape5"}
  15. else if (myName=="Microsoft Internet Explorer" && myVer==3)
  16. {msg="IE3"}
  17. else if (myName=="Microsoft Internet Explorer" && myVer==4)
  18. {msg="IE4"}
  19. else if (myName=="Microsoft Internet Explorer" && myVer==5)
  20. {msg="IE5"}
  21. alert("你所使用的瀏覽器是"+msg+"\n瀏覽本站最佳瀏覽器為IE5")
  22. </SCRIPT>
  23. </BODY>
  24. </HTML>
複製代碼

[attach]700[/attach]
作者: 小誌    時間: 2010-5-19 00:36

不同的瀏覽器,不同的網頁
我們之前說過:同一支JavaScript或許在某家族的瀏覽器中可正常執行無誤,但不代表在另一家族的瀏覽器中也可以正常無誤的執行,更重要的是:同樣的網頁排版樣式,在不同的瀏覽器中,也可能會有走樣的情況發生!因此,我們可以利用瀏覽器的偵測,將瀏覽者引導至其瀏覽器適合觀賞的網頁中:
[attach]701[/attach]
  1. <HTML>
  2. <HEAD>
  3. <TITLE>不同的瀏覽器,不同的網頁</TITLE>
  4. </HEAD>
  5. <BODY>
  6. <SCRIPT Language="JavaScript">
  7. function test()
  8. {
  9. myName=navigator.appName
  10. if (myName=="Netscape")
  11. {window.location="9-4-1.htm"}
  12. else if (myName=="Microsoft Internet Explorer")
  13. {window.location="9-4-2.htm"}
  14. }
  15. </SCRIPT>
  16. <form>
  17. <input type="button" value="不同的瀏覽器,不同的網頁" OnClick="test()">
  18. </form>
  19. </BODY>
  20. </HTML>
複製代碼


如果你希望在瀏覽者一進入你的首頁(通常為index.htm)後,就讓我們的判別程式立刻執行而將瀏覽器轉向到它專屬的網頁去,則我們可以將範例9-4.htm改寫,直接在<BODY>標籤內使用OnLoad事件,如下:
  1. <HTML>
  2. <HEAD>
  3. <TITLE>不同的瀏覽器,不同的網頁</TITLE>
  4. </HEAD>
  5. <BODY OnLoad="test()">
  6. <SCRIPT Language="JavaScript">
  7. function test()
  8. {
  9. myName=navigator.appName
  10. if (myName=="Netscape")
  11. {window.location="9-4-1.htm"}
  12. else if (myName=="Microsoft Internet Explorer")
  13. {window.location="9-4-2.htm"}
  14. }
  15. </SCRIPT>
  16. </BODY>
  17. </HTML>
複製代碼
進階研究:
在首頁中判別瀏覽者的瀏覽器名稱後,將瀏覽器轉向到它專屬的網頁去,這樣的做法並不嚴謹,一旦使用者回到首頁時,那我們就得再次進行判別的動作,然後又做一次轉向的動作!最好的解決方法就是利用框架把它框起來。
  1. <HTML>
  2. <HEAD>
  3. <TITLE>不同的瀏覽器,不同的網頁</TITLE>
  4. </HEAD>
  5. <SCRIPT Language="JavaScript">
  6. myName=navigator.appName

  7. if (myName=="Netscape")
  8. {
  9. document.write("<frameset rows='100%,*' frameborder=no border=0>")
  10. document.write("<frame src='9-4-1.htm'>")
  11. }

  12. else if (myName=="Microsoft Internet Explorer")
  13. {
  14. document.write("<frameset rows='100%,*' frameborder=no border=0>")
  15. document.write("<frame src='9-4-2.htm'>")
  16. }

  17. </SCRIPT>
  18. <BODY>
  19. </BODY>
  20. </HTML>
複製代碼





歡迎光臨 麻辣家族討論版版 (http://forum.twbts.com/)