检测浏览器和版本-没有Modernizr

时间:2018-08-17 07:45:02

标签: javascript c# asp.net browser user-agent

出于特定原因,我需要精确检测浏览器名称和版本。在此处和网络的其余部分进行搜索,大多数答案都指向Modernizr和检测功能。那不是我想要的我想获取实际的名称和版本。

这意味着:

  • 如果是Edge,我需要知道它的版本,而不是EdgeHTML版本(可选,但是如果我能获得这些数据就太好了)

  • 如果说维瓦尔第,那么别告诉我是Safari或Chrome,那就是维瓦尔第。

  • 如果它是我从未听说过的浏览器,并且没有在用户代理中搜索到的列表中,则我需要知道它的名称(和版本)。

我尝试使用.NET将 userAgent 数据和 HttpContext.Current.Request.Browser 类混合使用(甚至考虑了操作系统)。 但是,它有时发送不明确的数据,有时无法识别Chrome。

可能的解决方案可以是JS / jQuery,而不必是.NET。

编辑: 有人说这可能是重复的:How can you detect the version of a browser? 并非如此,因为我针对Vivaldi进行了测试

(用户代理:Mozilla / 5.0(Windows NT 10.0; WOW64)AppleWebKit / 537.36(KHTML,例如Gecko)Chrome / 64.0.3282.189 Safari / 537.36 Vivaldi / 1.95.1077.60)

并且它输出的是Chrome 64,因此不符合我上述的条件

2 个答案:

答案 0 :(得分:1)

由于en字符串有时可能有点时髦,因此我通常依靠useragent之类的库来为我解析。

如果您不想添加其他依赖项,则可以至少将其用作了解如何更好地解析navigator.userAgent字符串的起点。

答案 1 :(得分:1)

尝试这个

  jQuery.browser和jQuery.browser.version

完整的答案在这里: How to get browser's name client side?

希望它会有所帮助;)