JS 瀏覽器檢測


原創博文,轉載請注明出處

如果你現在還是一個JavaScript新手(比如本人,哈哈 ),由於瀏覽器的兼容問題,很容易寫出不兼容的JS代碼,這就需要我們對瀏覽器進行檢測。

JavaScript Navigator 對象包含了有關訪問者瀏覽器的所有信息。

Navigator含有以下幾個屬性: 

        瀏覽器信息:

         瀏覽器代碼名稱:navigator.appCodeName

          瀏覽器名稱:navigator.appName

          瀏覽器版本號:navigator.appVersion,包括了大版本號、小版本號、語言、操作平台等信息。

          瀏覽器次要版本:navigator.appMinorVersion

          MIME類型(數組):navigator.mimeTypes

          系統平台:navigator.platform

          插件(數組):navigator.plugins

          用戶代理:navigator.userAgent  

         cpu信息: navigator.cpuClass

          語言: navigator.language,還有userLanguage操作系統設定的自然語言,browserLanguage返回瀏覽器當前語言, systemLanguage返回當前操作系統的缺省語言。

        瀏覽器狀態:

               cookie開啟關閉:navigator.cookieEnabled

               瀏覽器聯網狀態:navigator.online

              對Java的支持:navigator.javaEnabled()

       其他:

              用戶信息:navigator.userProfile,擁有 addReadRequest() doReadRequest() getAttribute() clearRequest() 等方法。

             指定是否允許數據污點:navigator.taintEnabled 是否可以加密數據的真偽值。僅IE有效。在navigator 4.0 已刪除

 我們來看一個例子:這個例子用來返回當前瀏覽器的信息。

 1 <html>
 2 <body>
 3 
 4 <script type="text/javascript">
 5 var x = navigator;
 6 document.write("CodeName=" + x.appCodeName);
 7 document.write("<br />");
 8 document.write("MinorVersion=" + x.appMinorVersion);
 9 document.write("<br />");
10 document.write("Name=" + x.appName);
11 document.write("<br />");
12 document.write("Version=" + x.appVersion);
13 document.write("<br />");
14 document.write("CookieEnabled=" + x.cookieEnabled);
15 document.write("<br />");
16 document.write("CPUClass=" + x.cpuClass);
17 document.write("<br />");
18 document.write("OnLine=" + x.onLine);
19 document.write("<br />");
20 document.write("Platform=" + x.platform);
21 document.write("<br />");
22 document.write("UA=" + x.userAgent);
23 document.write("<br />");
24 document.write("userProfile="+x.userProfile)
25 document.write("<br />");
26 document.write("Language="+x.language)
27 document.write("<br />");
28 document.write("BrowserLanguage=" + x.browserLanguage);
29 document.write("<br />");
30 document.write("SystemLanguage=" + x.systemLanguage);
31 document.write("<br />");
32 document.write("UserLanguage=" + x.userLanguage);
33 </script>
34 
35 </body>

如果返回了“undefined” (比如,browserLanguage,cpuClass,onLine等屬性)是因為你的當前瀏覽器使用的是Firefox或者chrome,當你切換到IE之后就會發現其中變化了。

下面的例子是返回你的IE瀏覽器的版本信息:        

 1 <html>
 2 <body>
 3 <script>
 4 //獲取IE瀏覽器的版本號
 5 //返回數值,顯示IE的主版本號
 6 function getIEVer() {
 7  var ua = navigator.userAgent; //獲取用戶端信息
 8  var b = ua.indexOf("MSIE "); //檢測特殊字符串"MSIE "的位置
 9  if (b < 0) {
10   return 0;
11  }
12  return parseFloat(ua.substring(b + 5, ua.indexOf(";", b))); //截取版本號字符串,並轉換為數值
13 }
14 alert(getIEVer()); //返回數值8(我的IE8)
15 </script>
16 </body>
17 </html>

像在我的IE瀏覽器中,userAgent返回如下信息:UA=Mozilla/4.0 (compatible; MSIE 8.0; Windows NT 5.1; Trident/4.0; MSIE就代表了瀏覽器的版本,TridentIE排版引擎的名稱。

下面的例子可以用來判斷當前瀏覽器的版本。

 1 <html>
 2 <head>
 3     <title>JavaScript檢測瀏覽器</title>
 4 </head>
 5 <body>
 6 <script type="text/javascript">
 7     var userAgent=navigator.userAgent.toLowerCase(), s, o = {};   
 8     var browser={
 9         version:(userAgent.match(/(?:firefox|opera|safari|chrome|msie)[\/: ]([\d.]+)/))[1],
10         safari:/version.+safari/.test(userAgent),
11         chrome:/chrome/.test(userAgent),
12         firefox:/firefox/.test(userAgent),
13         ie:/msie/.test(userAgent),
14         opera: /opera/.test(userAgent ) 
15     } /* 獲得瀏覽器的名稱及版本信息 */
16 
17     if (browser.ie && browser.version > 6)
18     {
19       /* 判斷是否為IE 6以上版本,是則執行以下操作 */
20       document.writeln("<p>您使用的是IE "+browser.version+"<\/p>");
21     }
22    if (browser.safari) {
23       doucment.writeln("<p>您使用的是safari瀏覽器<\/p>");
24     }  /* 判斷是否為safari */
25    if (browser.firefox) {
26       document.writeln("<p>您使用的是firefox瀏覽器<\/p>");
27     } /* 判斷是否為firefox */
28    if (browser.chrome) {
29      document.writeln("<p>您使用的是chrome瀏覽器<\/p>");
30     }  /* 判斷是否為chrome */
31    if (browser.opera) {
32      document.writeln("<p>您使用的是opera瀏覽器<\/p>");
33     }   /* 判斷是否為opera */
34 </script>
35 </body>
36 </html>

 ps:博文發出去后有園友建議用檢測功能來代替Agent,由於剛接觸javascript而且並不以此為主要工作,所以對我而言用處不大,如果你是做前端工作的,建議你學習使用Modernizr檢查功能,我簡單的看了一下介紹,感覺是個強大的東西。

參照:javaScript語言參考手冊


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM