由于浏览器版本

时间:2016-06-11 13:43:07

标签: javascript

如果他们的浏览器名称/版本不在列表中,我需要将我的客户重定向到另一个网页。

我认为我的问题的答案在这里How can you detect the version of a browser?但我不明白。

我认为这就是我正在寻找的

ua.match(/(opera|chrome|safari|firefox|msie|trident(?=\/))\/?\s*(\d+)/i)

navigator.userAgent中查找匹配项,但我不理解正则表达式。

作为第三种选择,我试图阅读此内容,但我也不理解。

if(M[1]=== 'Chrome'){
        tem= ua.match(/\b(OPR|Edge)\/(\d+)/);
        if(tem!= null) return tem.slice(1).join(' ').replace('OPR', 'Opera');
}

任何人都可以解释这些吗?

1 个答案:

答案 0 :(得分:0)

正则表达式是搜索文本的简单方法。缺点是他们非常古老。如果你只是在http://www.regular-expressions.info/一遍又一遍地阅读和练习教程,你可以在几周内学习正则表达式。

这里的每个人都试图编写一个正则表达式来从user agent字符串中查找浏览器的文本,主要是因为用户代理字符串已经非常难以阅读。您可以在http://www.useragentstring.com/了解相关信息。

正如您所看到的,字符串的文本都是关于解释用于访问您网站的浏览器的内容。因此,大多数正则表达式只是试图找到浏览器名称。

在你的第二个例子中,这一点特别明显:

opera|chrome|safari|firefox|msie|trident

在正则表达式中,管道用于表示or,因此上面说的是opera or chrome or safari or firefox or msie or trident,因为您可能知道msie表示微软互联网资源管理器,您可以看到'只是一个浏览器列表。

您可以轻松搜索字符串中的文本。在javascript中,这是使用indexOf完成的,但是存在风险,因为用户代理字符串通常会在其浏览器名称未被(例如,if语句)理解的情况下列出后备浏览器。

如果我正在寻找Chrome浏览器,我可能会做这样的事情。

if (navigator.userAgent.toLowerCase().indexOf('chrome') > -1) {
    // do stuff with chrome
}

希望有所帮助。