我一直在对安全可靠的浏览器检测进行一些研究。鉴于解析navigator.userAgent
是最糟糕的方式,因为它很容易被用户欺骗,最好的选择似乎是使用特征检测。因此,基于StackOveflow和其他地方的各种文章,这就是它最终的样子:
IE: /*@cc_on!@*/false
Firefox: -moz-box-sizing
Safari: window.getComputedStyle && !window.globalStorage && !window.opera
Opera: window.opera && window.opera.version
Chrome: window.chrome
鉴于这些将被维护和监控以用于将来的浏览器发布(当一个人可能禁用我们现在用来检测它的功能时,或者可能是某些其他浏览器可能实现它,因此测试将对该浏览器返回true另外),这种方法有什么警告吗?用户可以以任何方式做事情,这样即使这些也会返回错误的结果吗?
答案 0 :(得分:1)
这些方法有什么警告吗?用户可以以任何方式做事情,这样即使这些也会返回错误的结果吗?
AFAIK你必须考虑两件事。首先,ID(取决于浏览器)可以pollute the global scope。其次,你不能already信任前缀是浏览器特定的anymore。正如其他用户在评论中指出的那样,我建议依靠特征检测(你正在做的是相关推理)。
作为旁注,您的Safari过滤器不可靠。