使用JavaScript可以实现准确的浏览器检测/重定向?

时间:2012-04-07 06:57:23

标签: redirect browser-detection

如果此答案在本网站的其他地方或在线,请原谅我。如果是的话,我肯定在过去的几天没有找到它。

我希望找到一种“准确的”方法来检测浏览器并重定向到一个简单的静态页面(如果不是最近的浏览器)。

我到目前为止找到的样本通常没有提供所用实际浏览器的准确表示。例如:

  • 使用Navigator 9进行测试时,我会收到一条消息,说明我正在使用Firefox 2
  • 使用Maxthon 3进行测试时,它报告我使用的是IE 9。

我的网站在我测试过的所有当前浏览器中都能正确显示。但我希望我能为那些因为某种原因仍在使用旧浏览器的.01%的用户提供一个基本的静态页面。他们仍然可以从我的网站获取一些基本信息,并鼓励他们更新到更新的浏览器。

如果有人有任何有用的建议,我将非常感谢他们。

非常感谢。

干杯,

大卫

2 个答案:

答案 0 :(得分:0)

由于种种原因,浏览器检测永远不会完美。如果您使用的是jQuery,则应该查看jQuery.browser

如果浏览器不符合标准,我会尝试检测服务器端的浏览器并执行HTTP重定向。大多数体面的框架都具有从用户代理字符串中检测浏览器的功能。同样,这并不完美,主要是因为数据浏览器报告。此外,如果Maxthon报告它是IE,那是因为 基于IE,因此布局引擎应该是相同的。

所以你要么

  • 支持少量浏览器并迎合他们的怪癖,将所有其他浏览器发送到基本页面(这对于未来版本的浏览器来说很糟糕,因为它们可能符合标准,但它们仍会显示您的基本页面),或

  • 您拥有适用于所有浏览器的符合标准的页面,然后您可以为那些给您带来问题的页面定义替代方案。

我会选择第二种选择。它通常归结为所有浏览器的一个版本,以及各种版本的IE的一些黑客。另外,请记住避免在CSS中填充并改为使用边距。

最后,您可能不应该测试浏览器和版本号,而是支持的功能。尝试使用Modernizr

答案 1 :(得分:0)

jQuery 1.3中不推荐使用$ .browser属性。在jQuery支持站点上,他们强烈建议使用detection feature(JQuery.support)而不是jQuery.browser属性。 实际上,这已在另一个问题中得到解答,请在此处查看How can you detect the version of a browser?