我创建了一个userAgent嗅探javascript应用程序(仅用于实验/学习目的 ),我差不多完成了。但是,对于$ browser.version,我得到了整个userAgent字符串。我已经谷歌和google'd,找不到答案。这是我的代码:
// contemplate new $browser module
var $browser, versionOffset, ua = navigator.userAgent;
if(ua.toLowerCase().indexOf('opera') > -1) {
$browser = {
name: "Opera",
engine: "Presto",
prefix: "-o-",
publisher: "Opera Software ASA",
version: ua.substring(versionOffset + 6)
}
}
else if(ua.toLowerCase().indexOf('msie') > -1) {
$browser = {
name: "Internet Explorer",
engine: "Trident",
prefix: "-ms-",
publisher: "Microsoft",
version: ua.substring(versionOffset + 5)
}
}
else if(ua.toLowerCase().indexOf('chrome') > -1) {
$browser = {
name: "Chrome",
engine: "WebKit",
prefix: "-webkit-",
publisher: "Google Inc.",
version: ua.substring(versionOffset + 7)
}
}
else if(ua.toLowerCase().indexOf('safari') > -1) {
$browser = {
name: "Safari",
engine: "WebKit",
prefix: "-webkit-",
publisher: "Apple Computer Inc.",
version: ua.substring(versionOffset + 8)
}
}
else if(ua.toLowerCase().indexOf('firefox') > -1) {
$browser = {
name: "Firefox",
engine: "Gecko",
prefix: "-moz-",
publisher: "Mozilla",
version: ua.substring(versionOffset + 8)
}
}
所以在我的HTML中,我正在做:
<script>
alert($browser.name + " " + $browser.version);
</script>
但我在chrome中的输出是:
[JavaScript警告]:
Chrome($ browser.name)
Mozilla / 5.0(Windows NT 6.1; WOW64)AppleWebKit / 537.4(KHTML,与Gecko一样)Chrome / 22.0.1229.91 Safari / 537.4($ browser.version)
但我想要,显然是“Chrome 22”或“Chrome 22.0.1229.91”
答案 0 :(得分:1)
这修复了它 - 返回了2个数字版本号。
您需要设置versionOffset,如前所述。
else if(ua.toLowerCase().indexOf('chrome') > -1)
{
versionOffset = ua.toLowerCase().indexOf('chrome');
$browser = {
name: "Chrome",
engine: "WebKit",
prefix: "-webkit-",
publisher: "Google Inc.",
version: ua.substr(versionOffset+7, 2)
}
}
答案 1 :(得分:0)
您的代码对我来说没有多大意义。你必须使用诸如versionOFfset之类的东西。另外,请注意这样做:ua.substring(versionOffset + 8)
将返回从versionOffset + 8开始的整个字符串。所以,既然你从未真正设置过versionOffset,那么它是未定义的,所以这样做:versionOffset + 8返回NaN,JS有助于忽略它并决定只用零替换NaN(基本上),所以你最终得到整个ua字符串回。这是一个可能更接近您正在寻找的小提琴:
else if((versionOffset = ua.toLowerCase().indexOf('chrome')) > -1) {
$browser = {
name: "Chrome",
engine: "WebKit",
prefix: "-webkit-",
publisher: "Google Inc.",
version: ua.substring(versionOffset + 7).substring(0, ua.indexOf(" "))
}
}
看看我如何在if语句中设置versionOffset,然后在版本之后查找第一个“”。这并不意味着在现实世界中使用,但就像你说的那样,你只是想学习。