2014-11-06 50 views
-1

我的場景是檢索瀏覽器和佈局信息 - 包括版本並保留它們以進行歷史記錄跟蹤。所以這不是爲了檢查功能。由於JQuery.browser已經過時,我已經看到了最流行的方式來瀏覽這個是通過閱讀navigator.userAgent。但是,這個值是不穩定的,可以被瀏覽器覆蓋,我想這不應該是推薦的方式。這樣做有沒有其他辦法?除了檢索UserAgent之外,還有其他方式獲取瀏覽器信息嗎?

+0

據我所知,這是唯一的方法...除非你想做一些測試,它支持哪些HTML標籤來告訴IE版本 – Steve 2014-11-06 01:35:19

回答

4

你真的只有兩種選擇:

  1. 你可以相信的userAgent字符串
  2. 您可以在瀏覽器中運行各種功能測試,試圖找出哪些瀏覽器的家人和版本,它確實是。

如果您想了解各種不同的瀏覽器(包括移動瀏覽器)以及各種版本的各種瀏覽器,那麼確定每個瀏覽器/版本組合的測試是很多工作。

我會說這實際上取決於你收集的信息。如果您真的只是好奇瀏覽器使用您的應用程序,那麼您可以將瀏覽器和測試支持指向最常使用您的應用程序的瀏覽器,然後僅使用用戶代理字符串就可以。大多數瀏覽器不會僞造useragent,所以如果這是統計用途,那麼一小部分假貨不會以任何好的方式扭曲你的數字,並且使用useragent字符串的方式更簡單。

如果您試圖在給定的瀏覽器中決定在特定瀏覽器中依賴哪種JavaScript功能,那麼您遠遠不止設計功能測試以查看該瀏覽器是否實際上具有功能,因爲這裏的假用戶代理字符串(或您自己的代碼中的一段錯誤的useragent邏輯)導致該應用在該瀏覽器中無法正常工作。


一個「中間」的解決方案可能是隻識別瀏覽器爲(IE,Chrome瀏覽器,火狐,Safari,等...),什麼家庭,你不關心到底哪個版本,那麼功能測試集可能可以看出,沒有太多麻煩,因爲每個家庭至少有至少一些識別特殊功能。這肯定比僅使用useragent更有效,但比使用特性測試確定確切版本的工作量少得多。

另一個「中間」解決方案可能是通過上述更簡單的功能測試來識別瀏覽器系列,然後查看它是否與userAgent字符串一致,如果是,則決定相信該版本的userAgent字符串。如果不是的話,你會拋出數據來判斷瀏覽器是否在某處對你撒謊(或者你的測試存在輕微缺陷)。

+0

謝謝你的評論。我問這個問題是因爲我從Salesforce文檔中讀到這個值是可選的,不應該依賴它。但是從現在開始,它只是一種選擇,它適用於大多數主流瀏覽器,我想這已經夠用了。我已向Salesforce發送文檔更改請求。 – 2014-11-06 01:48:22

相關問題