2014-01-28 211 views
-2

我想寫JS腳本來檢測瀏覽器名稱和版本,此刻我的腳本檢測到瀏覽器名稱即; Firefox,Safari,IE,Chrome。找到瀏覽器名稱的代碼工作正常,但我發現它的一些部分在線,我想如果有人能解釋一部分我不明白的JS代碼,並且無法在Google上找到答案。瀏覽器名稱檢測

行下面的例子是用來檢測瀏覽器,IE瀏覽器:

var chrome = navigator.userAgent; 
     if ((chrome.indexOf("Chrome"))!=-1){  
      document.write("Chrome Dude "); 
     } 

    var ie = navigator.userAgent; 
    if((ie.indexOf("MSIE"))!=-1){ 
     document.write("IE Dude "); 
    } 

此代碼,我不理解的部分是在if語句內和exacly !=-1

而且已經檢測到瀏覽器如何檢測其版本...?

回答

0

它檢查navigator.uerAgent字符串中的字符串「Chrome」。如果它返回-1意味着它沒有被發現;因此,它不等於-1,那麼找到字符串,並且indexOf返回找到字符串「Chrome」的索引(位置)。

+0

確定的,但在這種情況下,它也可以是= 0,因爲0是假/ null的存在脫穎而出字符串「Chrome是不是!發現「 – Tomazi

+0

我不明白你的意思。閱讀indexOf的手冊。如果找不到字符串,則返回-1。它不返回null或0 id沒有找到字符串。見http://www.w3schools.com/jsref/jsref_indexof.asp – roel

0

如果您使用此代碼用於理解目的,那麼可以,但是如果您想要使用瀏覽器檢測來使用某些功能,那麼請使用功能檢測代替(http://modernizr.com/)。

你的車代碼檢查所請求的子串在navigator.userAgent使用indexOf

的的indexOf()方法返回在該給定的元件 可以在陣列中找到的第一個索引,或-1,如果它是不存在

如果不存在,該方法返回-1,如果字符串被發現,所以如果你正在檢查的結果!=-1(讀不爲-1)。

編號:https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/indexOf

得到瀏覽器版本檢查這個QA:How can you detect the version of a browser?