2013-03-07 119 views
0

我一直在做一些关于安全可靠的浏览器检测的研究。鉴于解析navigator.userAgent是最糟糕的方式,因为它可能很容易被用户欺骗,所以最好的办法似乎是使用特征检测。因此,基于在StackOveflow和其他地方的各种物品,这是什么样子最后:安全的基于功能的浏览器检测

IE: /*@[email protected]*/false 
Firefox: -moz-box-sizing 
Safari: window.getComputedStyle && !window.globalStorage && !window.opera 
Opera: window.opera && window.opera.version 
Chrome: window.chrome 

鉴于这些将保持和监视浏览器未来的版本(当一个人可能会禁用一个功能,我们现在使用检测它,或者可能是其他浏览器可能实现它,因此该测试将返回该浏览器也是如此),这种方法是否有任何警告?用户可以以任何方式执行这些操作,以至于这些操作都会返回错误的结果?

+0

IE检测可以通过'' – 2013-03-07 11:40:14

+0

您可以使用http://modernizr.com/? – oleq 2013-03-07 11:40:39

+0

检测功能,而不是浏览器。 – dfsq 2013-03-07 11:40:51

回答

1

是否有任何注意事项这些方法?用户可以以任何方式执行这些操作,以至于这些操作都会返回错误的结果?

AFAIK你必须考虑两件事情。首先一个ID,取决于浏览器,可能pollute the global scope。其次,你不能,already,相信前缀是浏览器特定的anymore。正如其他用户在评论中指出的那样,我会建议依靠功能检测来代替(您正在做的是相关推理)。

请注意,您的Safari筛选器不可靠。

+0

我没有完全明白你的意思。我在做什么*是*特征检测,对吗? – SexyBeast 2013-03-18 16:51:21

+0

@Cupidvogel您正在根据功能推断某个浏览器。常规*功能检测*表示您正在检查自己的功能。 – Knu 2013-03-19 06:04:49

+0

好的。但是,这是必要的,因为不同的浏览器可能会以不同的方式实现相同的功能。所以,特色检测将无济于事。 – SexyBeast 2013-03-19 09:40:10