条件或js来检测用户是否在Windows XP上?

时间:2010-06-18 07:43:57

标签: php javascript jquery html

因为windows xp渲染某些字体很差,我想检测用户是否正在使用该操作系统并相应地向主体添加一个类。

我正在寻找一个html条件语句或php $ _SERVER var来做到这一点

然而,如果没有沿着下面的行显示一条javscript

if(users_os === 'xp'){
    $('body').addClass('xp');
}

我应该坚持哪些途径?!!!

谢谢!


编辑:澄清!

这是一个项目的进一步开发,如果用户已经在本地安装了webapp,则会使用更好的字体 - 请参阅我的解决方案的一部分here:用于扩展字体堆栈功能。

字体在操作系统和浏览器的组合上呈现不同,而不是单独的浏览器 - 我希望能够知道用户是否在xp上,因为它对Calibri的渲染非常糟糕

6 个答案:

答案 0 :(得分:7)

确实无意义确定哪个operating system用于 Web 应用程序。唯一值得关注的是Browser。即使在浏览器中,您也只需要关心它支持什么以及什么不支持。

在JQuery中,您可以使用.support().browser().boxModel()方法实现此目的。

答案 1 :(得分:4)

我完全同意jAndy's answer,您不应该对Web应用程序进行操作系统检测,您应该很少需要浏览器检测(当然,除了统计/分析)。

话虽如此,如果你坚持你需要这个,你可以使用PHP函数get_browser()得到你需要知道的东西:

$browser = get_browser();
echo $browser["platform"];
// -> "WinXP"

答案 2 :(得分:2)

好吧,使用PHP,您可以使用$_SERVER['HTTP_USER_AGENT']。该字符串包含浏览器,但也包含操作系统。实施例

Mozilla/5.0 (Windows; U; Windows NT 5.1; de; rv:1.9.2.3) Gecko/20100401 Firefox/3.6.3 (.NET CLR 3.5.30729)

使用“substr”函数(更快)或preg_match,您可以从字符串中提取操作系统。

答案 3 :(得分:0)

你应该对navigator.appVersion进行检查,其中包含操作系统版本(我的Win 7成为“Windows NT 6.1”):

在浏览器地址栏中尝试此操作,以查看返回的值。

javascript:alert(navigator.appVersion);

答案 4 :(得分:0)

你可以试试这个

function OS()
{
    var n = navigator.oscpu;
    var Name = "empty";

    var osName = new Array("Windows XP", "Windows Vista", "Windows 7");

    var osNameAlt = new Array("Windows NT 5.1", "Windows NT 6.0", "Windows NT 6.1");

    for(a=0;a < osNameAlt.length; a++)
    {
        if (n == osNameAlt[a])
        {
            this.Name = osName[a];

            break;
        }


    }   

}



var os = new OS();


alert(os.Name);

只需将操作系统名称添加到数组

即可

答案 5 :(得分:0)

您也可以使用navigator.platform

var isXP = /NT 5.1/.test(navigator.platform)

quirksmode.org有一个很棒的课程,您可以使用它来检测浏览器平台here(粘贴在下面)。

我已经使用类似的方法在Mac平台上条件性地包含CSS,因为Mac上的字体可能完全不同,甚至打破了尺寸和间距差异的布局。我之所以这样做是因为它在项目中很晚才,我们需要一个创可贴。我喜欢让不同的网站在不同的浏览器中看起来不同,只要它们保持功能和吸引力。例如,我只使用CSS实现圆角,因此它们不会在IE中显示。我认为这是可以接受的,但有些人可能不会(看看quoterobot.com的例子 - 顺便说一句我的工作!)

var BrowserDetect = {
    init: function () {
        this.browser = this.searchString(this.dataBrowser) || "An unknown browser";
        this.version = this.searchVersion(navigator.userAgent)
            || this.searchVersion(navigator.appVersion)
            || "an unknown version";
        this.OS = this.searchString(this.dataOS) || "an unknown OS";
    },
    searchString: function (data) {
        for (var i=0;i<data.length;i++) {
            var dataString = data[i].string;
            var dataProp = data[i].prop;
            this.versionSearchString = data[i].versionSearch || data[i].identity;
            if (dataString) {
                if (dataString.indexOf(data[i].subString) != -1)
                    return data[i].identity;
            }
            else if (dataProp)
                return data[i].identity;
        }
    },
    searchVersion: function (dataString) {
        var index = dataString.indexOf(this.versionSearchString);
        if (index == -1) return;
        return parseFloat(dataString.substring(index+this.versionSearchString.length+1));
    },
    dataBrowser: [
        {
            string: navigator.userAgent,
            subString: "Chrome",
            identity: "Chrome"
        },
        {   string: navigator.userAgent,
            subString: "OmniWeb",
            versionSearch: "OmniWeb/",
            identity: "OmniWeb"
        },
        {
            string: navigator.vendor,
            subString: "Apple",
            identity: "Safari",
            versionSearch: "Version"
        },
        {
            prop: window.opera,
            identity: "Opera"
        },
        {
            string: navigator.vendor,
            subString: "iCab",
            identity: "iCab"
        },
        {
            string: navigator.vendor,
            subString: "KDE",
            identity: "Konqueror"
        },
        {
            string: navigator.userAgent,
            subString: "Firefox",
            identity: "Firefox"
        },
        {
            string: navigator.vendor,
            subString: "Camino",
            identity: "Camino"
        },
        {       // for newer Netscapes (6+)
            string: navigator.userAgent,
            subString: "Netscape",
            identity: "Netscape"
        },
        {
            string: navigator.userAgent,
            subString: "MSIE",
            identity: "Explorer",
            versionSearch: "MSIE"
        },
        {
            string: navigator.userAgent,
            subString: "Gecko",
            identity: "Mozilla",
            versionSearch: "rv"
        },
        {       // for older Netscapes (4-)
            string: navigator.userAgent,
            subString: "Mozilla",
            identity: "Netscape",
            versionSearch: "Mozilla"
        }
    ],
    dataOS : [
        {
            string: navigator.platform,
            subString: "Win",
            identity: "Windows"
        },
        {
            string: navigator.platform,
            subString: "Mac",
            identity: "Mac"
        },
        {
               string: navigator.userAgent,
               subString: "iPhone",
               identity: "iPhone/iPod"
        },
        {
            string: navigator.platform,
            subString: "Linux",
            identity: "Linux"
        }
    ]

};
BrowserDetect.init();