5

JavaScript中的瀏覽器檢測有很多種方法。在js中檢測瀏覽器的最佳方式

據我所知,使用navigator.userAgent或檢測功能(如XMLHttpRequest)等。

有人可以告訴我哪種方式最好,最有效嗎?

+3

對於檢測功能使用http://www.modernizr.com/ – Idered

回答

16

如果你真的需要知道他們使用何種瀏覽器,你大多有看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?)的各個方面有很好的討論。

+0

正是我需要的!檢測IE9及以下。 – vsync

+0

@ T.J。 Crowder - 同意選擇功能檢測,但如果您嘗試檢測瀏覽器以解決錯誤,該怎麼辦?一個你無法測試的錯誤,或者它會掛起瀏覽器? – johntrepreneur

+0

@ T.J。克勞德 - 除了我以前的問題,我需要找到IE9到IE7的瀏覽器,並且一個合適的方法來做到這一點(基於你對功能檢測的評論)將使用設置變量的條件註釋(直到IE9支持)。對? – johntrepreneur

6

您不檢測瀏覽器。相反,你檢查可用的功能。

瀏覽器檢測可以解決(地獄..幾年前,我不得不自己做,當在Gmail上使用Opera),但如果瀏覽器有一個功能,那麼你知道你可以使用它。

+0

有些情況下,您必須知道特定的瀏覽器,以便您可以,例如,提供瀏覽器特定的消息。 –

+0

什麼會說神奇的消息? –

+0

對我來說,在Safari中啓用webGL的說明。 –

0

你可以試試這個http://www.quirksmode.org/js/detect.html

但是,正如其他人所指出的,你應該嘗試使用功能檢測,但有時它只是不夠的。因爲當一些功能只是工作太慘/慢慢例如等

爲特徵檢測的另一個偉大的工具是Modernizr

0

特徵檢測是一種捷徑,以檢測瀏覽器。如已經列出的,知道天氣功能是否受到瀏覽器支持更重要,而不是檢測瀏覽器。 下面的鏈接將幫助您根據它們所支持的對象瀏覽器之間的區別: http://www.javascriptkit.com/javatutors/objdetect3.shtml

但是,如果你只是想檢測瀏覽器僅適用於瞭解起見,最好是使用Navigator而不是檢查各種功能通過檢查條件。

相關問題