2013-03-07 115 views
0

我一直在做一些關於安全可靠的瀏覽器檢測的研究。鑑於解析navigator.userAgent是最糟糕的方式,因爲它可能很容易被用戶欺騙,所以最好的辦法似乎是使用特徵檢測。因此,基於在StackOveflow和其他地方的各種物品,這是什麼樣子最後:安全的基於功能的瀏覽器檢測

IE: /*@[email protected]*/false 
Firefox: -moz-box-sizing 
Safari: window.getComputedStyle && !window.globalStorage && !window.opera 
Opera: window.opera && window.opera.version 
Chrome: window.chrome 

鑑於這些將保持和監視瀏覽器未來的版本(當一個人可能會禁用一個功能,我們現在使用檢測它,或者可能是其他瀏覽器可能實現它,因此該測試將返回該瀏覽器也是如此),這種方法是否有任何警告?用戶可以以任何方式執行這些操作,以至於這些操作都會返回錯誤的結果?

+0

IE檢測可以通過'' – 2013-03-07 11:40:14

+0

您可以使用http://modernizr.com/? – oleq 2013-03-07 11:40:39

+0

檢測功能,而不是瀏覽器。 – dfsq 2013-03-07 11:40:51

回答

1

是否有任何注意事項這些方法?用戶可以以任何方式執行這些操作,以至於這些操作都會返回錯誤的結果?

AFAIK你必須考慮兩件事情。首先一個ID,取決於瀏覽器,可能pollute the global scope。其次,你不能,already,相信前綴是瀏覽器特定的anymore。正如其他用戶在評論中指出的那樣,我會建議依靠功能檢測來代替(您正在做的是相關推理)。

請注意,您的Safari篩選器不可靠。

+0

我沒有完全明白你的意思。我在做什麼*是*特徵檢測,對嗎? – SexyBeast 2013-03-18 16:51:21

+0

@Cupidvogel您正在根據功能推斷某個瀏覽器。常規*功能檢測*表示您正在檢查自己的功能。 – Knu 2013-03-19 06:04:49

+0

好的。但是,這是必要的,因爲不同的瀏覽器可能會以不同的方式實現相同的功能。所以,特色檢測將無濟於事。 – SexyBeast 2013-03-19 09:40:10