JavaScript中的瀏覽器檢測有很多種方法。在js中檢測瀏覽器的最佳方式
據我所知,使用navigator.userAgent
或檢測功能(如XMLHttpRequest
)等。
有人可以告訴我哪種方式最好,最有效嗎?
JavaScript中的瀏覽器檢測有很多種方法。在js中檢測瀏覽器的最佳方式
據我所知,使用navigator.userAgent
或檢測功能(如XMLHttpRequest
)等。
有人可以告訴我哪種方式最好,最有效嗎?
如果你真的需要知道他們使用何種瀏覽器,你大多有看userAgent
字符串(雖然你有時可以通過找了幾個模糊的特徵推斷瀏覽器)。請注意,有些瀏覽器會讓用戶改變它並騙你。 :-)
但是檢測到瀏覽器已過時,這是有原因的。相反,正如你所說,你想檢測你正在尋找的功能。這是更可靠,更少的工作。僅僅因爲IE不支持addEventListener
,並不意味着它永遠不會(事實上IE9會)。因此,您可以使用功能檢測功能,而且可以對代碼進行未來驗證。
下面是一個具體的例子:假設你想知道(就像我爲我的place5 jQuery plug-in所做的那樣)瀏覽器是否支持placeholder
attribute。你可能使用瀏覽器檢測,並維護哪些瀏覽器版本有或沒有支持,這是凌亂的,你必須不斷回來,等等,或者你可以這樣做的列表:
if ("placeholder" in document.createElement("input")) {
// The browser supports the attribute
}
else {
// It doesn't
}
...你完成了。
在this page中有一大套功能測試,由kangax維護。還有一個名爲Modernizr的庫,它可以爲您提供功能檢測,媒體查詢等功能。如果您使用jQuery,它通過jQuery.support
內置了一些功能檢測。關於this article中的功能檢測,媒體查詢,外形檢測(平板電腦,手機或PC?)的各個方面有很好的討論。
正是我需要的!檢測IE9及以下。 – vsync
@ T.J。 Crowder - 同意選擇功能檢測,但如果您嘗試檢測瀏覽器以解決錯誤,該怎麼辦?一個你無法測試的錯誤,或者它會掛起瀏覽器? – johntrepreneur
@ T.J。克勞德 - 除了我以前的問題,我需要找到IE9到IE7的瀏覽器,並且一個合適的方法來做到這一點(基於你對功能檢測的評論)將使用設置變量的條件註釋(直到IE9支持)。對? – johntrepreneur
您不檢測瀏覽器。相反,你檢查可用的功能。
瀏覽器檢測可以解決(地獄..幾年前,我不得不自己做,當在Gmail上使用Opera),但如果瀏覽器有一個功能,那麼你知道你可以使用它。
有些情況下,您必須知道特定的瀏覽器,以便您可以,例如,提供瀏覽器特定的消息。 –
什麼會說神奇的消息? –
對我來說,在Safari中啓用webGL的說明。 –
你可以試試這個http://www.quirksmode.org/js/detect.html
但是,正如其他人所指出的,你應該嘗試使用功能檢測,但有時它只是不夠的。因爲當一些功能只是工作太慘/慢慢例如等
爲特徵檢測的另一個偉大的工具是Modernizr
特徵檢測是一種捷徑,以檢測瀏覽器。如已經列出的,知道天氣功能是否受到瀏覽器支持更重要,而不是檢測瀏覽器。 下面的鏈接將幫助您根據它們所支持的對象瀏覽器之間的區別: http://www.javascriptkit.com/javatutors/objdetect3.shtml
但是,如果你只是想檢測瀏覽器僅適用於瞭解起見,最好是使用Navigator而不是檢查各種功能通過檢查條件。
對於檢測功能使用http://www.modernizr.com/ – Idered