MDN documentation表示window.navigator.userAgent已棄用,不應使用。如果我想收集用戶瀏覽器和操作系統數據以進行分析(而不是功能檢測),我應該使用什麼?如果不推薦使用window.navigator.userAgent,應該使用什麼?
6
A
回答
3
用戶代理字符串變得毫無意義且非常不可靠。
您不應該使用用戶代理字符串,而應該使用功能檢測。如果您需要使用功能X,請測試X是否可用。
但也爲了直接回答你的問題,沒有JS的替代品。基於檢測到用戶代理字符串
2
瀏覽器識別是 可靠,因此不推薦的,因爲用戶代理字符串是用戶可配置的 。
例如:
- 在Firefox中,您可以更改有關偏好 general.useragent.override:配置。一些Firefox擴展做到 ;但是,這隻會更改發送的HTTP標頭,並且 不會影響JavaScript代碼執行的瀏覽器檢測。
- 歌劇6+允許用戶設置通過 瀏覽器識別碼串菜單
- Microsoft Internet Explorer中使用Windows註冊表
- Safari和因爲iCab允許用戶改變瀏覽器的用戶代理字符串 到預定的Internet Explorer或Netscape串通過 菜單。
我認爲,他們正試圖從JavaScript完全消除此功能。
更新:
Object-Oriented JavaScript, 2nd Edition:這是最好不要依賴 用戶代理字符串,但使用功能嗅探(也叫 容量檢測)來代替。原因是難以追蹤所有瀏覽器及其不同版本。簡單地檢查您打算使用的功能是否確實是用戶瀏覽器中可用的 更容易。例如有一個看看 下面的代碼:
if (typeof window.addEventListener === 'function') { // feature is supported, let's use it } else { // hmm, this feature is not supported, will have to // think of another way }
相關問題
- 1. 爲什麼不推薦使用assert_template,而應該使用什麼?
- 2. 我應該使用什麼來代替iOS5.1中不推薦使用的UISegmentedControlStyleBezeled?
- 3. 爲什麼Logger.isInfoEnabled不推薦使用org.jboss.logging.Logger?
- 4. 爲什麼不推薦使用isJavaLetterOrDigit?
- 5. 爲什麼不推薦使用JButton.enable?
- 6. 爲什麼不推薦使用struts2 FilterDispatcher?
- 7. 爲什麼SET不推薦使用?
- 8. 爲什麼不推薦使用StringTokenizer?
- 9. std :: iterator爲什麼不推薦使用?
- 10. Object.observe()爲什麼不推薦使用
- 11. jQuery切換不推薦使用什麼?
- 12. 爲什麼不推薦使用std :: strstream?
- 13. 爲什麼不推薦使用body.scrollTop?
- 14. Manifest爲何不推薦使用?什麼時候應該使用ClassTag,何時應該使用TypeTag
- 15. 爲什麼UIAlertView如果不推薦使用iOS 8?
- 16. 爲什麼不推薦使用window.showModalDialog?代替使用什麼?
- 17. JdbcTemplate queryForInt/Long在Spring 3.2.2中不推薦使用。它應該取代什麼?
- 18. 什麼時候推薦使用MySQL BLOB?
- 19. 如何找出iOS中爲什麼不推薦使用函數?
- 20. 不推薦使用Boost.Signals
- 21. NSOpenPanel - 不推薦使用?
- 22. 不推薦使用:`config.adapters.default` Sails.js
- 23. PHP對不推薦使用的函數有什麼作用?
- 24. setItemLabelsVisible不推薦使用,但setBaseItemLabelsVisible(true);什麼都不做
- 25. 我應該使用什麼來代替GWT中不推薦使用的樹部件?
- 26. 爲什麼我應該使用vagrant如果我使用virtualenv?
- 27. 爲什麼不推薦HibernateTemplate?
- 28. 如果文本在我的didSelectRowAtIndexPath中不推薦使用,我應該繼續使用哪些內容?
- 29. 爲什麼不使用參數列表的情況下不推薦使用?
- 30. 什麼時候應該使用AWS,什麼時候不使用
現代化主義者已經使用特徵檢測。例如:https://github.com/Modernizr/Modernizr/blob/master/src/prefixedCSSValue.js – Quentin
是的,你是對的 –
你如何檢測需要解決渲染錯誤的功能? – Jules