JavaScript 检测浏览器

16

有没有检查旧浏览器的脚本可用?它必须遵循以下标准:

  1. 允许使用 Firefox 3.6 或更高版本

  2. 允许使用 Google Chrome 15 及以上版本

  3. 允许使用 Safari 5 或更高版本

  4. 禁止使用 IE 和 Opera

  5. 禁止所有其他浏览器


6
你应该优先选择特性检测而不是浏览器检测,比如可以查看Modernizr - Sirko
支持 Sirko 的特征检测。如果您想包含名称和版本号,那么只应在检测到用户的浏览器缺少所需功能时提供建议。 - searlea
5
禁止IE和Opera浏览器?天哪 - Luca Filosofi
4
IE9和Opera 11为什么算是旧的,而Firefox 3.6却被认为是“新”的?你实际上想解决的问题是什么?与其禁止超过75%的用户群体…… - tereško
只是路过...您可以查看这个答案https://dev59.com/vGkw5IYBdhLWcg3wg6ug - Runcorn
2个回答

37

您可以使用navigator对象,并在其中使用userAgent属性,如下所示:

 if (navigator.userAgent.indexOf('Firefox') != -1 && parseFloat(navigator.userAgent.substring(navigator.userAgent.indexOf('Firefox') + 8)) >= 3.6){//Firefox
 //Allow
 }else if (navigator.userAgent.indexOf('Chrome') != -1 && parseFloat(navigator.userAgent.substring(navigator.userAgent.indexOf('Chrome') + 7).split(' ')[0]) >= 15){//Chrome
 //Allow
 }else if(navigator.userAgent.indexOf('Safari') != -1 && navigator.userAgent.indexOf('Version') != -1 && parseFloat(navigator.userAgent.substring(navigator.userAgent.indexOf('Version') + 8).split(' ')[0]) >= 5){//Safari
 //Allow
 }else{
 // Block
 }

@JackRenshaw .. 而且它完全没有用,因为浏览器可以伪装成其他任何东西,甚至可以关闭 JavaScript。 - tereško

1

我同意 @Sirko 的观点。最好使用特性检测,而不是浏览器检测。一个替代 Modernizr 的选择是 jQuery 的 $.support() 函数。它虽然不是完全一样的东西,但可能符合您的需求。

如果您坚持使用浏览器检测,可以使用 jQuery 的 $.browser() 函数编写自己的脚本。


问题在于,一些被认为是现代浏览器的浏览器(如IE和Opera的最新版本)不允许使用HTML块进行JS混淆。 - user1310420
1
什么?你能详细说明一下吗? - Ayman Safadi
4
这里只是一个评论,$.browser已经从jQuery 1.9.0中删除了。 - Diego Vieira

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接