我知道我可以使用 JavaScript 从浏览器端的“navigator.userAgent”获取一些操作系统信息,这篇文章讨论了一些细节。
我的问题是,当我尝试确定用户使用的是 Windows 7 还是 Windows Server 2008 时,我遇到了问题。因为windows版本代码相同,所以都是“windows NT 6.1”。
除了“navigator.userAgent”之外,还有其他方法可以使用 JavaScript 在浏览器端检测特定的 Windows 版本吗?
顺便说一句,以下是我的检测代码。目前我无法区分 windows 7 和 windows server 2008 ......
(function (window) {
//Windows detection
var otherOS = "Other OS";
var WindowsDetect = {
Start: function () {
this.OSVer = this.AnalyseOSVer(this.OSData) || otherOS;
if (this.OSVer != otherOS) {
this.AnalyseBit();
}
},
AnalyseOSVer: function (data) {
var targetString = this.DataString.toUpperCase();
if (targetString.indexOf(this.WinStr.toUpperCase() > 0)) {
this.IsWin = true;
for (var i = 0; i < data.length; i++) {
var subString = data[i].SubString.toUpperCase();
if (typeof data[i].SpecialString != "undefined" && targetString.indexOf(data[i].SpecialString.toUpperCase()) < 0) {
continue;
}
if (targetString && targetString.indexOf(subString) > 0) {
return data[i].NickName;
}
}
}
},
AnalyseBit: function () {
var targetString = this.DataString.toUpperCase();
for (var i = 0; i < this._64BitStrs.length; i++) {
var bitStr = this._64BitStrs[i].toUpperCase()
if (targetString.indexOf(bitStr) > 0) {
this.Is64Bit = true;
return;
}
}
},
DataString: window.navigator.userAgent,
_64BitStrs: ["WOW64", "Win64; x64;"],
Is64Bit: false,
WinStr: "Windows NT",
IsWin: false,
OSData: [
{
SubString: "Windows NT 5.1",
NickName: "Windows XP"
},
{
SubString: "Windows NT 5.2 ",
NickName: "Windows Server 2003/Windows XP x64 Edition"
},
{
SubString: "Windows NT 6.0",
NickName: "Windows Vista"
},
{
SubString: "Windows NT 6.1",
NickName: "Windows 7"
},
{
SubString: "Windows NT 6.2",
SpecialString: "ARM",
NickName: "Windows RT"
},
{
SubString: "Windows NT 6.2",
NickName: "Windows 8"
}
]
};
WindowsDetect.Start();
var windowsVer = WindowsDetect.OSVer;
})(window)