【问题标题】:get specific windows version by javascript通过javascript获取特定的windows版本
【发布时间】:2012-11-21 06:51:33
【问题描述】:

我知道我可以使用 JavaScript 从浏览器端的“navigator.userAgent”获取一些操作系统信息,and this post discus some details.

我的问题是,当我尝试确定用户使用的是 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)

【问题讨论】:

  • 您能否发布不同的window.navigator.userAgents,对于 2 个操作系统版本?
  • 嗨@Cerbrus,我有一个 64 位 Windows 服务器 R2,IE9 上的 userAgent 是“Mozilla/5.0(兼容;MSIE 9.0;Windows NT 6.1;WOW64;Trident/5.0)”和 userAgent Windows 7 上的 IE9 是“Mozilla/5.0(兼容;MSIE 9.0;Windows NT 6.1;Trident/5.0)”
  • 所以除了在 Windows Server 上的 userAgent 中添加 "WOW64" 之外,没有任何区别...... "WOW64" 部分与它是 Windows Server 无关,虽然...... (这是一个显示 64 位兼容性的标志)到目前为止我的好主意。
  • @Cerbrus,“WOW64”表示我使用的是 64 位系统...如果我使用 64 位 win7,也会有一个“WOW64”。请参阅此博客msdn.microsoft.com/en-us/library/ms537503(v=vs.85).aspx。我想知道除了 userAgent 字符串之外,JavaScript 是否还有其他有用的东西可以用来进行操作系统检测
  • 是的,我知道。恐怕我不知道有任何替代选择......

标签: javascript windows-7 operating-system windows-server-2008 user-agent


【解决方案1】:

我在玩 JavaScript,效果最好。

<script type="text/javascript">
var OSName="Unknown OS";
if (navigator.appVersion.indexOf("Windows NT 6.2")!=-1) OSName="Windows 8";
if (navigator.appVersion.indexOf("Windows NT 6.1")!=-1) OSName="Windows 7";
if (navigator.appVersion.indexOf("Windows NT 6.0")!=-1) OSName="Windows Vista";
if (navigator.appVersion.indexOf("Windows NT 5.1")!=-1) OSName="Windows XP";
if (navigator.appVersion.indexOf("Windows NT 5.0")!=-1) OSName="Windows 2000";
if (navigator.appVersion.indexOf("Mac")!=-1) OSName="Mac/iOS";
if (navigator.appVersion.indexOf("X11")!=-1) OSName="UNIX";
if (navigator.appVersion.indexOf("Linux")!=-1) OSName="Linux";

document.write('Your OS: '+OSName);
</script>

如果您需要帮助,请在 Windows NT 上尝试这个 Wikipedia 页面。 http://en.wikipedia.org/wiki/Windows_NT#Releases

【讨论】:

    猜你喜欢
    • 2014-11-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-10-20
    • 2010-10-19
    • 2011-11-03
    • 2019-01-02
    • 1970-01-01
    相关资源
    最近更新 更多