2016-04-27 30 views

回答

3

用戶代理字符串變得毫無意義且非常不可靠。

您不應該使用用戶代理字符串,而應該使用功能檢測。如果您需要使用功能X,請測試X是否可用。

但也爲了直接回答你的問題,沒有JS的替代品。基於檢測到用戶代理字符串

2

瀏覽器識別是 可靠,因此不推薦的,因爲用戶代理字符串是用戶可配置的 。

例如:

  • 在Firefox中,您可以更改有關偏好 general.useragent.override:配置。一些Firefox擴展做到 ;但是,這隻會更改發送的HTTP標頭,並且 不會影響JavaScript代碼執行的瀏覽器檢測。
  • 歌劇6+允許用戶設置通過 瀏覽器識別碼串菜單
  • Microsoft Internet Explorer中使用Windows註冊表
  • Safari和因爲iCab允許用戶改變瀏覽器的用戶代理字符串 到預定的Internet Explorer或Netscape串通過 菜單。

Source

我認爲,他們正試圖從JavaScript完全消除此功能。

更新:

Object-Oriented JavaScript, 2nd Edition:這是最好不要依賴 用戶代理字符串,但使用功能嗅探(也叫 容量檢測)來代替。原因是難以追蹤所有瀏覽器及其不同版本。簡單地檢查您打算使用的功能是否確實是用戶瀏覽器中可用的 更容易。例如有一個看看 下面的代碼:

if (typeof window.addEventListener === 'function') { 

    // feature is supported, let's use it 
} 
else { 

    // hmm, this feature is not supported, will have to 
    // think of another way 
} 
+1

現代化主義者已經使用特徵檢測。例如:https://github.com/Modernizr/Modernizr/blob/master/src/prefixedCSSValue.js – Quentin

+0

是的,你是對的 –

+0

你如何檢測需要解決渲染錯誤的功能? – Jules

相關問題