这是检测IE版本的干净且好的方法吗?

时间:2012-10-16 15:34:48

标签: javascript

我发现了一篇文章,通过检查IE中是否存在非标准document.all对象来解释如何检测IE。

这种方法会被视为良好做法吗?它是稳定的,真的是未来的证明吗?

以下是文章:http://tanalin.com/en/articles/ie-version-js/

另外,请不要忘记将来打样的部分:http://tanalin.com/en/articles/ie-version-js/#h-future-proof

以下是建议的代码:

if (document.all && !document.querySelector) { // IE7 or lower

}

4 个答案:

答案 0 :(得分:4)

  

这种方法会被视为良好做法吗?

没有

  

它是否稳定且真正面向未来?

没有

一般来说,浏览器检测并不是一种好的做法。

在那些问题的最佳解决方案,以及您需要检测的浏览器是IE的版本的情况下,Conditional Comments是可行的方法。

答案 1 :(得分:2)

我和@Quentin在一起,特别是如果你不是真的“在家里”在JS中。我并不是说有什么不好的,但在极少数情况下,你可以使用完整的浏览器检测脚本,但除非你能完全理解代码,否则我建议你不要使用它。

有一篇关于quirksmode的好文章在解释原因方面做得很好。
同样在quirksmode上,你可以找到full browser detection script。但正如我所说:除非你能诚实地说你完全理解这些代码,否则我建议你现在就把它留在那里......

答案 2 :(得分:1)

浏览器检测是一种谬误。

您应该关注的是“特征检测”,这是duck-typing的一种形式。

换句话说,您对用户是否正在运行特定浏览器版本以及对其运行的浏览器(无论是品牌还是版本)是否支持您要使用的功能更感兴趣。 / p>

这样做的好处是除了升级浏览器之外,还有很多方法可以添加功能。像Modernizr这样的库通过JavaScript实现添加“缺失”功能。浏览器检测会错过这个。

浏览器检测的“优势”在于它是许多单个特征检测代码的简写。然而,这可能是一种虚假的经济。

通常,请执行以下操作之一:

  1. 如果您正在编写图书馆,请明确说明您要测试的每个功能。
  2. 如果您不是在编写图书馆,请使用图书馆。

答案 3 :(得分:0)

直接检测功能总是更好。本文关于检测IE的(比当前稳定版本更早)版本的IE在直接检测到功能/错误是不可能的情况下或者考虑到所有浏览器都是过度杀伤除了旧的IE很久以前就支持这个功能。