2012-09-11 23 views
0

所以我知道$.browser已被棄用,「皺眉」,因爲jQuery 1.3,但它繼續存在&工作在代碼中。

它仍然使用純javascript:navigator.userAgent來確定正在使用的瀏覽器以及版本。


現在是有什麼關於這些我不知道導航儀本身,我不應該使用任何$.browser或純香草JS拿到瀏覽器/版本?我只是想確定他們何時有IE8(例如),他們確實擁有它,並且我沒有處理錯誤的代碼。


什麼其他替代方法我們有瀏覽器嗅探?我知道$.support,我使用modernizr,但有時我需要的只是需要沮喪和骯髒的瀏覽器版本,而不是看看瀏覽器能夠處理什麼(我認爲這是一個完全不同的問題解決者)。

+1

可能是http://www.quirksmode.org/js/detect.html知道它是什麼瀏覽器......但最終檢測到支持 - > ** http://www.quirksmode。 org/js/support.html ** –

+4

一般建議不要嘗試猜測瀏覽器是什麼,而是檢查一個函數是否可用。有太多的瀏覽器和變體... –

+0

推薦的方式是使用功能檢測,而不是瀏覽器版本檢測。 –

回答

1

你自己回答這個問題。理想的是檢查功能支持。隨着更多瀏覽器和設備進入市場,這種方法應該擴展。

但是,如果你想做一些「骯髒的事情」,那麼瀏覽器檢測當然可行,但只要你知道你的代碼在現有的瀏覽器集合中工作(或者甚至只是你測試過的那些代碼與)。

1

一般建議不要試圖猜測瀏覽器是什麼,而是檢查一個函數是否可用。瀏覽器和變體太多了。

要檢查的功能是可用的,你只需做到這一點:

if (!Array.prototype.map) { 
    // not available, shut down computer ! 
0

如果一個「必須」要知道這對我的網頁瀏覽器的,我用這個個人;

(function() { 
    var re_browsers = { 
     firefox: /firefox\/([\d\.]+)/, 
     chrome: /chrome\/([\d\.]+)/, 
     safari: /webkit.*?version\/([\d\.]+)/, 
     opera: /opera.*?version\/([\d\.]+)/, 
     ie: /msie\s+([\d\.]+)/ 
     // ... 
    }; 

    var ua = window.navigator.userAgent.toLowerCase(), k, re, browser = {}; 
    for (k in re_browsers) { 
     if (re = re_browsers[k].exec(ua)) { 
      break; 
     } 
    } 
    browser[k] = true; 
    browser["version"] = parseFloat(re && re[1]); 
    browser["versionOrig"] = re[1]; 

    jQuery.extend({browser: browser}); 
})(); 
相關問題