var user = navigator.userAgent;
var browser = {};
browser.opera = user.indexOf("Opera") > -1 && typeof window.opera == "object";
browser.khtml = (user.indexOf("KHTML") > -1 || user.indexOf("AppleWebKit") > -1 || user.indexOf("Konqueror") > -1) && !browser.opera;
browser.ie = user.indexOf("MSIE") > -1 && !browser.opera;
browser.gecko = user.indexOf("Gecko") > -1 && !browser.khtml;
if ( browser.ie ) {
var ie_reg = /MSIE (\d+\.\d+);/;
ie_reg.test(user);
var v = parseFloat(RegExp["$1"]);
browser.ie55 = v <= 5.5;
browser.ie6 = v <= 6;
}
Run Code Online (Sandbox Code Playgroud)
最近,我倾向于使用JavaScript.我看到一些代码来检查浏览器,但我不能很好地遵循它.代码对我来说太难了.可以向我解释一下吗?非常感谢.
navigator.userAgent 包含一个包含当前浏览器数据的String.
在第二行代码中,您创建一个browser空的对象.然后,添加属于true或false取决于浏览器的属性.例如,如果浏览器是Opera,则该单词Opera位于某处navigator.userAgent.对于KHTML和Gecko来说,显然也是如此.
要实际检查String是否包含某些字符/单词,您可以使用indexOf.这将返回单词开始的索引.如果它没有出现在String中,则返回-1.所以检查> -1意味着检查它是否包含单词.
对于IE,您可以通过执行正则表达式来区分版本5.5和版本6 navigator.userAgent.这是一种放在字符串上的形状,可以过滤掉你需要的东西.您检查解析的版本是5.5还是6并适当地存储该数据.
因此,最后该browser对象包含正在使用浏览器的值.