我的場景是檢索瀏覽器和佈局信息 - 包括版本並保留它們以進行歷史記錄跟蹤。所以這不是爲了檢查功能。由於JQuery.browser已經過時,我已經看到了最流行的方式來瀏覽這個是通過閱讀navigator.userAgent。但是,這個值是不穩定的,可以被瀏覽器覆蓋,我想這不應該是推薦的方式。這樣做有沒有其他辦法?除了檢索UserAgent之外,還有其他方式獲取瀏覽器信息嗎?
回答
你真的只有兩種選擇:
- 你可以相信的userAgent字符串
- 您可以在瀏覽器中運行各種功能測試,試圖找出哪些瀏覽器的家人和版本,它確實是。
如果您想了解各種不同的瀏覽器(包括移動瀏覽器)以及各種版本的各種瀏覽器,那麼確定每個瀏覽器/版本組合的測試是很多工作。
我會說這實際上取決於你收集的信息。如果您真的只是好奇瀏覽器使用您的應用程序,那麼您可以將瀏覽器和測試支持指向最常使用您的應用程序的瀏覽器,然後僅使用用戶代理字符串就可以。大多數瀏覽器不會僞造useragent,所以如果這是統計用途,那麼一小部分假貨不會以任何好的方式扭曲你的數字,並且使用useragent字符串的方式更簡單。
如果您試圖在給定的瀏覽器中決定在特定瀏覽器中依賴哪種JavaScript功能,那麼您遠遠不止設計功能測試以查看該瀏覽器是否實際上具有功能,因爲這裏的假用戶代理字符串(或您自己的代碼中的一段錯誤的useragent邏輯)導致該應用在該瀏覽器中無法正常工作。
一個「中間」的解決方案可能是隻識別瀏覽器爲(IE,Chrome瀏覽器,火狐,Safari,等...),什麼家庭,你不關心到底哪個版本,那麼功能測試集可能可以看出,沒有太多麻煩,因爲每個家庭至少有至少一些識別特殊功能。這肯定比僅使用useragent更有效,但比使用特性測試確定確切版本的工作量少得多。
另一個「中間」解決方案可能是通過上述更簡單的功能測試來識別瀏覽器系列,然後查看它是否與userAgent字符串一致,如果是,則決定相信該版本的userAgent字符串。如果不是的話,你會拋出數據來判斷瀏覽器是否在某處對你撒謊(或者你的測試存在輕微缺陷)。
謝謝你的評論。我問這個問題是因爲我從Salesforce文檔中讀到這個值是可選的,不應該依賴它。但是從現在開始,它只是一種選擇,它適用於大多數主流瀏覽器,我想這已經夠用了。我已向Salesforce發送文檔更改請求。 – 2014-11-06 01:48:22
- 1. 除了webkit,mozila還有其他的web瀏覽器實現嗎?
- 2. 除了PIVOT之外,還有其他的方法嗎?
- 3. JavaBean除了getter和setter之外還有其他方法嗎?
- 4. 除了轉義引號之外,還有其他方法嗎?
- 5. 除了Android SDK之外,還有其他的Android模擬器嗎?
- 6. 除了CURL以外,還有其他休息客戶選擇嗎?
- 7. 除了爲網站編制索引器外,還有其他緩存工具/瀏覽器會執行請求嗎?
- 8. Scala:除了scala之外,還有其他的嘗試嗎?
- 9. EOL == EOS除了BASIC之外還有其他語言嗎?
- 10. 除了Siphon之外,iPhone還有其他的SIP實現嗎?
- 11. 到目前爲止,除了Chrome實現的WebRTC之外,還有其他瀏覽器嗎?
- 12. 處理iOS Exceptions除了Crittercism之外還有其他方法
- 13. 除了MediaPlayer以外,還有其他的Android mp3播放器嗎?
- 14. 除了Windows上的C/C++之外,其他語言是否還有CScope樣式的源瀏覽器?
- 15. 檢測瀏覽器沒有檢查useragent
- 16. 除了kxmenu之外,iOS還有其他自定義彈出式菜單嗎?
- 17. 除了使用瀏覽器之外,還有更好的方式來測試或調試Mod重寫規則嗎?
- 18. 除了使用循環之外,是否還有其他方式顯示列表?
- 19. 除了使用Cursor之外,還有其他方法可以從SQLite數據庫中獲取數據嗎?
- 20. 除了IE以外的其他瀏覽器的XML解析器
- 21. 除cron之外,還有其他方式可以定期執行SQL代碼嗎?
- 22. 除了雙擊之外,還有其他方式可以在iOS設計器中應用約束嗎?
- 23. 除了EditorTemplate MVC之外,還有其他htmlAttributes 5.2
- 24. 除了MSXML以外,還有其他更好的IDOMImplementation嗎?
- 25. 除了使用獨立存儲/數據庫與AudioPlaybackAgents進行通信之外,還有其他方法嗎?
- 26. 任何方式從safari或其他瀏覽器獲取cookie?
- 27. 除委託之外還有其他協議用法嗎?
- 28. 除了模擬持久任務之外,Thread.Sleep()還有其他用途嗎?
- 29. 除了處理urlencode結果的編碼之外,還有其他因素嗎?
- 30. Faye除了實時活動供稿之外還有其他選項嗎?
據我所知,這是唯一的方法...除非你想做一些測試,它支持哪些HTML標籤來告訴IE版本 – Steve 2014-11-06 01:35:19