使用jQuery/JavaScript检测操作系统而无需插件?

38

我正在寻找一种使用jQuery或JavaScript检测操作系统的方法,以便在下载页面上为Mac和Windows推荐特定的文件。我希望不必在页面中添加另一个插件来实现此功能。

7个回答

55

尝试:

var os = navigator.platform;

然后根据你的结果相应地处理os变量。

你也可以循环遍历navigator对象的每个属性,以帮助你更熟悉这些对象:

<script type="text/javascript">
for(var i in navigator){
    console.log(i+"="+navigator[i]+'<br>');
}
</script>

1
根据developer.mozilla.org的说法,该功能已被弃用,不再推荐使用。 - Dennie

32

纯JavaScript也许就是你需要的。

var OSName="Unknown OS";
if (navigator.appVersion.indexOf("Win")!=-1) OSName="Windows";
if (navigator.appVersion.indexOf("Mac")!=-1) OSName="MacOS";
if (navigator.appVersion.indexOf("X11")!=-1) OSName="UNIX";
if (navigator.appVersion.indexOf("Linux")!=-1) OSName="Linux";

document.write('Your OS: '+OSName);

正如Nick所建议的,你也可以使用navigator.platform


4
既然navigator.platform存在,为什么要费那么大劲呢? - NickAldwin
2
由于navigator.platform已被弃用,请查看https://developer.mozilla.org/en-US/docs/Web/API/NavigatorID.platform。 - Lucas Rossini
3
但是appVersion也已经被弃用了。 - Gordon

14
据我所知,platform属性是Navigator对象中最难伪造的属性之一。您可以使用它来获取布尔值。
var isMac = navigator.platform.toUpperCase().indexOf('MAC')!==-1;
var isWindows = navigator.platform.toUpperCase().indexOf('WIN')!==-1;
var isLinux = navigator.platform.toUpperCase().indexOf('LINUX')!==-1;

如果您需要区分旧的PowerPc和新的Intel Mac,请使用以下方法。

var isMacPpc=navigator.platform==="MacPPC";
var isMacIntel=navigator.platform==="MacIntel";

https://developer.mozilla.org/en/DOM/window.navigator.platform


6

尝试:

alert(navigator.appVersion);

那应该可以给你一个字符串,你可以解析操作系统。

5
<script>

osName = 'Unknown';

function nav(x, y, z) {
    z = z || y;
    if (navigator[x] && navigator[x].indexOf(y) !== -1) {
        osName = z;
    }
}

/*   navigator     value     download  */
nav( "appVersion", "X11",    "UNIX"    );
nav( "appVersion", "Mac",    "MacOS"   );
nav( "appVersion", "Linux"             );
nav( "userAgent",  "Linux"             );
nav( "platform",   "Linux"             );
nav( "appVersion", "Win",    "Windows" );
nav( "userAgent",  "Windows"           );
nav( "platform",   "Win",    "Windows" );
nav( "oscpu",      "Windows"           );

document.getElementById("download"+osName).className = "knownOS";

</script>

确保正确的下载链接易于找到,但不要隐藏其他操作系统的链接。人们可能仍然需要它们。
<style>

#downloadUNIX, #downloadMacOS, #downloadLinux, #downloadWindows {
    color:#6D94F2;
    line-height:35px;
    margin:24px 0 24px 0;
    padding:10px;
}
.knownOS {
    background-color:#F7ECAD !important;
    border:2px solid #E8913A;
    color:#133CC4 !important;
    font-weight:bold;
}

</style>

And some html

<ul>
    <li><a id="downloadUNIX"    href="unix Link Here"   >Download Napster-9000 for UNIX</a></li>
    <li><a id="downloadWindows" href="windows Link Here">Download Napster-9000 for Windows</a></li>
    <li><a id="downloadMacOS"   href="mac os link here" >Download Napster-9000 for OS X</a></li>
    <li><a id="downloadLinux"   href="linux Link Here"  >Download Napster-9000 for Linux</a></li>
</ul>

现在用户可以禁用或阻止JavaScript,如果他愿意的话。链接仍然存在,与使用JavaScript编写链接相反,这需要JavaScript才能工作。
这里有一个示例:http://jsfiddle.net/7fmJb/

0

您可以在文档就绪函数内使用此函数。将代码添加到事件的函数内。

function checkOperatingSystem()
{
    var  userAgent = navigator.userAgent || navigator.vendor || window.opera;

    //Check mobile device is Android
    if (/android/i.test(userAgent)) {
        //Add your Code here
    }

    //Check mobile device is IOS
    if (/iPad|iPhone|iPod/.test(userAgent) && !window.MSStream) {
        //Add your Code here
    }

    //Check device os is Windows (For Laptop and PC)
    if (navigator.appVersion.indexOf("Win")!=-1)
    {
        //Add your Code here
    }

    //Check device os is MAC (For Laptop and PC)
    if (navigator.appVersion.indexOf("Mac")!=-1)
    {
        //Add your Code here
    }  
}

0

我认为这可能会有所帮助:

navigator.appVersion

尝试在您的JS文件中控制它。 例如:

console.log(navigator.appVersion);

你将获得关于操作系统的大部分信息。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接