当前位置: 首页 > 知识库问答 >
问题:

如何检测用户浏览器客户端?[副本]

澹台臻
2023-03-14

我知道这是不好的做法和特征识别应该是建设网站的方式。然而,这不是我的用例。

我有我的浏览器扩展的不同发行版,我想根据他们当前的浏览器更改下载按钮。

我试过使用navigator.useragent,事实证明这是非常没用的,因为大多数浏览器都设置了所有流行的用户代理。例如chrome就有这个。

navigator.userAgent = "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_11_4) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/49.0.2623.110 Safari/537.36"

我见过很多网站的下载按钮上都有这个功能。如何做到这一点呢?

编辑:我现在了解了为什么“mozzila/x.x”位于userAgent字符串开头的历史。抱歉误会了。

共有1个答案

梁丘诚
2023-03-14

您可以通过多种方式检测浏览器。

对于Chrome,除了在navigator.useragent上创建一个正则表达式外:

var isChrome = /Chrome/.test(navigator.userAgent);

您还可以检查以下内容:

var isChrome = !!window.chrome && !!window.chrome.webstore;

我建议你看这个答案了解更多的细节。

您还应该考虑使用modernizr.js进行浏览器检测。

 类似资料:
  • 一面-2023年5月6日 ios客户端,大前端、object-c 自我介绍。有点背稿的感觉。 聊一个项目。说了OSG的项目。提到内存管理。 开始八股。内存:只能指针。 多态,静态、动态。模板、虚函数。静态的除了模板还有啥。析构函数为什么要添加虚函数。 空类size的大小。 struct/class的区别。 堆/栈/BSS几个内存类别 TCP四次挥手。 ipv4地址空间这么小怎么够用,NAT。用同一

  • 二面-2023年5月8日 第一次迟到了面试.. 自我介绍。刚开始没准备各种结巴,语言不顺。整体还是讲完了。 项目。疯狂问项目、但是又不是挖,就是让自己讲。讲了好几个项目。看起来不是特别满意。一个是我自己准备项目拿普通横向项目准备的亮点肯定不够不到位,另外岗位是客户端,没有什么相关的。 岗位匹配度上,问了好几遍和原技术栈不匹配,自己的个人想法。(一开始也是你捞的我,我有啥想法 手撕算法。快排。这两面

  • 谢谢你的反馈。BrowserCap是一个遗留特性,我们不再继续更新它,除非我们发现ASP.NET特性因此而中断。如果您真的希望您的应用程序将Edge识别为Edge(而不是chrome),那么您可以添加自己的浏览器文件,以匹配app_browsers文件夹下的Edge的UA字符串。反馈 更新:*以下是来自三个浏览器的UA字符串,可能表明最后一条信息可能是指示器,但不是Chrome的。正如你所看到的,

  • 出于调试的目的,我希望在控制台的客户端访问我的Angular模块函数。 是否有一种方法可以在浏览器的控制台中访问Angular$scope?

  • 免责声明:我知道这个问题有重复(一、二、三),但是: null 我的代码: 这将打印: (所有3个请求返回200个http代码) 我有JVM选项: (在我的keystore.jks中添加了vk.com证书) 下面是http-client的内部日志 当然,上面的测试是在关闭内部日志记录的情况下执行的,因为它会给每个请求增加大约50毫秒的额外时间。 我已经读了三遍所有的apache http-clie

  • 我对硒很陌生。我开发了一个应用程序,使用一个selenium web驱动程序来做网页上的一些动作。当我在本地运行时,它可以很好地工作,也就是说,它在我的机器中启动了一个浏览器。我在VM服务器上部署了这个应用程序,所以脚本在服务器上运行(在VM Ware机器中启动的浏览器),而不是在客户端。谁能帮助我如何在客户端启动浏览器?