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;
}
最近,我倾向于使用JavaScript。我看到一些代码来检查浏览器,但我不能很好地遵循它。代码对我来说太难了。可以向我解释一下吗?非常感谢。
答案 0 :(得分:6)
navigator.userAgent
包含一个包含当前浏览器数据的字符串。
在第二行代码中,您创建一个空的browser
对象。然后,根据浏览器添加true
或false
的属性。例如,如果浏览器是Opera,则单词Opera
位于navigator.userAgent
中。 KHTML和Gecko也是如此。
要实际检查字符串是否包含某些字符/单词,您可以使用indexOf
。这将返回单词开始的索引。如果它没有出现在String中,则返回-1。因此,检查> -1
意味着检查它是否包含单词。
对于IE,您可以通过在navigator.userAgent
上执行正则表达式来区分版本5.5和版本6。这是一种放在字符串上的形状,可以过滤掉你需要的东西。您检查解析出的版本是5.5还是6并正确存储该数据。
所以最后browser
对象包含正在使用浏览器的值。