我无法理解这段代码。如果这是一个RegExp,可以用更简单的方式完成吗?或者这已经广泛兼容? (使用IE6和更新的浏览器)
var u = navigator.userAgent;
// Webkit - Safari
if(/webkit/i.test(u)){
// Gecko - Firefox, Opera
}else if((/mozilla/i.test(u)&&!/(compati)/.test(u)) || (/opera/i.test(u))){
}
这只是:
String.indexOf("webkit")
答案 0 :(得分:7)
首先,它会在字符串u
中查找“webkit”(忽略大小写),以确定浏览器是Safari。
如果没有找到,它会查找“mozilla”(没有“兼容”)或“opera”以试图确定浏览器是Firefox或Opera。同样,搜索忽略了大小写(/i
)。
修改强>
/.../i.test()
代码是一个正则表达式,它们内置于JavaScript中。
答案 1 :(得分:3)
test()是一个正则表达式测试函数。您可以阅读更多相关信息here.
此方法测试字符串中正则表达式的匹配,如果成功则返回true,否则返回false。测试方法可以与字符串文字或字符串变量一起使用。
代码:
rexp = /er/
if(rexp.test("the fisherman"))
document.write("It's true, I tell you.")
输出:
It's true, I tell you.
另外here's另一个很棒的页面,详细介绍了这个功能。
执行正则表达式与指定字符串之间匹配的搜索。返回true或false。
答案 2 :(得分:2)
这类似,但会返回任何浏览器的客户端名称和版本。
window.navigator.sayswho= (function(){
var N= navigator.appName, ua= navigator.userAgent, tem;
var M= ua.match(/(opera|chrome|safari|firefox|msie)\/? *(\.?\d+(\.\d+)*)/i);
if(M && (tem= ua.match(/version\/([\.\d]+)/i))!= null) M[2]= tem[1];
M= M? [M[1], M[2]]: [N, navigator.appVersion, '-?'];
return M;
})();
警报(navigator.sayswho)
答案 3 :(得分:1)
您的代码似乎是某种浏览器嗅探。 u
的价值由user agent identifier开头。并且使用正则表达式进行测试(使用RegExp literal syntax /
expr
/
构建)。
答案 4 :(得分:0)
正则表达式的方法测试测试字符串中正则表达式的匹配,如果成功则返回true,否则返回false。
此代码在u变量的字符串中测试正则表达式'webkit','mozilla'等的匹配。