使用javascript进行可靠的浏览器检测?

时间:2010-11-18 09:19:57

标签: php javascript jquery html browser

我有一个网站,并且像大多数网站一样在Firefox中加载速度更快。

我想在没有FF的用户进入网站的情况下创建某种形式的条形图,该条形图显示在我的网站上。 这个栏会说“安装FF以获得更好的性能等等......”

我该怎么做?浏览器检测我猜,但有很多不同的代码。您知道的任何代码都更可靠,更好用吗?

是的,有没有人知道我是否需要Mozilla的许可在我的网站上有这样的栏?

由于

编辑:FF不是最快的浏览器,我知道了!

9 个答案:

答案 0 :(得分:10)

(跳过关于你想做什么是好事还是坏事的所有争论。假设你真的喜欢Firefox而想要推广它。)

  1. 使用navigator对象检查浏览器是否为Firefox。 navigator.appCodeNamenavigator.appNamenavigator.appVersion。您想要做的不是您网站的关键部分,因此您不需要故障安全检测方法。如果它适用于超过95%的目标用户,那么方法就不错了。

  2. 我怀疑您是否需要获得广告免费产品的许可。 Mozilla甚至encourages你这样做。

答案 1 :(得分:8)

您可能对spreadfirefox.com上的此页感兴趣:http://www.spreadfirefox.com/affiliates/utw。它包含一组Spread Firefox按钮,但更有趣的是随附的代码。您会注意到按钮的图像实际上会根据您查看的浏览器而改变:

http://sfx-images.mozilla.org/utw/3.6/FF36_36_120x240.png http://sfx-images.mozilla.org/utw/3.6/FF36_FF_120x240.png http://sfx-images.mozilla.org/utw/3.6/FF36_IE_120x240.png http://sfx-images.mozilla.org/utw/3.6/FF36_OTHER_120x240.png

查看Javascript code,您可以看到他们已经为您完成了工作:

/* *********************************************
This code came from http://www.quirksmode.org/js/detect.html 
In order for this to function properly, it must be updated regularly
***********************************************/

那么为什么不修改他们用于处理图像或代码的代码呢?或者更好的是,使用他们现成的一个?

答案 2 :(得分:6)

jQuery browser detection

然而,jQuery开发者自己认为你不应该选择浏览器,而应该选择浏览器支持的功能。因此,他们建议使用browser feature detection。有道理。

答案 3 :(得分:4)

没有100%可靠的浏览器检测。访问navigator-object提供的userAgent-string是不可靠的,因为它可以被用户伪造。访问现在仅存在于特殊浏览器中的某些属性,现在可能是可靠的,但将来不可能,因为您永远不知道,如果其他浏览器有时会应用此属性,或者将来在浏览器中删除该属性。

答案 4 :(得分:4)

这可能无法解答您的问题,但您可以在HTML代码中进行条件评论,如下所示:

http://www.quirksmode.org/css/condcom.html

您可以使用此代码检测任何IE版本。

除非您受到Mozilla基金会的聘用,否则我不明白为什么应该通过此邮件通知使用Chrome和Safari以及类似浏览器的用户。他们做出了积极的选择并选择了他们自己的浏览器,这是你不能说的大多数IE用户可能不知道其他选择。 主要是,它是Internet Explorer的问题。

很抱歉,如果这有点偏离主题,如果它根本没用。

/道德咆哮的结束;)

答案 5 :(得分:2)

我认为浏览器检测不是解决某些问题的正确方法。如果您的代码在其他浏览器上运行缓慢,您应首先调查原因,清理并优化代码,如果您没有解决,可以选择为其他浏览器提供缩减功能。

但是请避免向用户建议他应该在计算机上安装什么

答案 6 :(得分:2)

好的,所以我得到-1因为我不喜欢Firefox,或者因为我没有给你解决方案供你复制和粘贴?那么你去找人:

<!--[if IE]>
Special instructions for IE
<![endif]-->

在jQuery中

if ($.browser.msie)

答案 7 :(得分:1)

我认为这不是一个好主意。那么其他浏览器如Chrome或Safari呢?目前,Chrome比Firefox(Sunspider测试)更快,所以你的声明“它在Firefox中加载速度更快”并不是真的正确。比什么更快?如果您的意思是IE,那么网络上已经存在解决方案,用于提醒用户不要使用IE并切换到其他内容。你不应该只赞成一个浏览器。

答案 8 :(得分:1)

好的,对于这篇文章的人来说

http://www.quirksmode.org/js/detect.html

这是我在很长一段时间内看到的最好的,让你的支持浏览器和FF2的版本不能完成FF3所做的一切