首页 > 解决方案 > 如何在不使用 `navigator` 和 `navigator.userAgent` 的情况下通过 javascript 检测浏览器版本?

问题描述

tldr; 是否可以在不使用导航器字符串或客户端提示的情况下从前端获取浏览器版本?

因此,随着谷歌关于冻结字符串的公告navigator.userAgent,我的任务是通过一堆工作中的 javascript 库来替换浏览器嗅探(又名userAgent)。我知道,我知道,我们不应该userAgent首先使用它,因为它是一堆混乱和谎言,但我继承了这段代码而不是创建它。幸运的是,一堆用例都过时了(IE8-10、PhantomJS、Windows Phone),我可以完全删除它们。其他我可以弄清楚原始作者正在使用哪些特征/意图,我可以交换他们的条件以进行特征检测。

但是一些面向公众的逻辑正在navigator.userAgent用于确定浏览器版本,而这更难以替换,因为我在互联网上找到的与此搜索相关的所有内容都指向使用其中一个navigator属性。我不知道客户如何以及为什么关心“用户使用的 Firefox 版本”,我正在等待这个答案,但与此同时,我正在尝试看看是否有可以检测浏览器版本的解决方案在前端。我不会将答案仅限于 javascript,如果有 CSS/HTML/JS 组合,我完全赞成。

我也知道谷歌说我们应该使用客户端提示,但这需要访问超出我任务范围的服务器。

通过谷歌公告冻结计划:

如果我在这里正确阅读了第二个项目符号,那么到navigator2020 年 6 月上旬,字符串的版本部分将被冻结且不可靠。

同样,很清楚,我知道这应该由 feature detection 取代,但我无法完全控制我们的客户和用户,我只是看看是否有解决方案。我有一种感觉,很多人最终会尽快解决这个问题。

标签: javascripthtmlcsscross-browserclient-hints

解决方案


推荐阅读