特征检测(不是用户代理嗅探)来执行浏览器检测

Feature detection (NOT user agent sniffing) to perform browser detection

我们公司有一项业务规则,我们应该阻止我们的用户从我们的 QA 团队尚未完全测试的浏览器访问我们的应用程序。此业务规则不可更改,我们的用户提前知道他们只能使用某些浏览器来使用我们的产品。

为了实施该业务规则,我正在寻找类似 Modernizr that uses feature detection to detect browsers. Modernizr is a feature detection library, not a browser detection library, and they've said that they won't add browser detection 的网络库。

是否有任何库使用特征检测技术来验证用户代理字符串?

我宁愿不要用户用户代理单独嗅探。如果我想进行用户代理嗅探,我会使用 Bowser 之类的东西。

解决方案预计不需要 100% 正确。解决方案只需要 90% 正确。

在您的情况下,您确实需要 UA 嗅探,因为您的 QA 团队正在 [比方说] Firefox 和 Internet Explorer 上进行测试,而您的企业想要禁止其他浏览器。然而,您可能已经了解了 UA 嗅探的所有缺点,浏览器可以欺骗其他浏览器的事实,维护最新列表的困难,yadda yadda。好吧,感谢 npm,您可以通过 useragent.

等模块进行可靠且最新的 UA 嗅探和协调
npm install useragent --save

如果您的 QA 团队确实在测试 功能 并且您的业务规则是由合理且合乎逻辑的人编写的,那么您可以像我们其他人一样简单地使用功能检测。相反,您将在 2016 年阻止用户使用您的 app/site,因为天真的项目所有者只想支持 he/she 感到满意的浏览器 (sigh) .

编辑: 如果你真的想给别人留下深刻印象,你可以编写实际在浏览器中执行的功能测试。您可以自动单击 buttons/links、填写表格,并针对这些用户操作的副作用编写断言。例如,您可以使用无效凭据填写登录表单,单击提交,并期望显示 "Invalid login" 错误消息。 Selenium is a very popular tool, but there are also free open source tools like FuncUnit and others which allow you to do this. Then you can use things like browserstack to run these tests in the browsers of your choice. There are also free tools like Testee 允许您在机器上安装所有支持的浏览器,以便您可以在这些浏览器中启动功能测试。这在本地或 CI 工具(如 Travis)中都有效。

免责声明:我在构建和维护 FuncUnit 和 Testee 的公司工作 - 这些工具是免费和开源的,这并不是为了宣传我们的公司。