jQuery/Javascript在没有插件的情况下检测操作系统?

Tim*_*ers 37 javascript jquery operating-system

我正在寻找一种方法来检测下载页面的操作系统,使用jQuery或Javascript来推荐Mac与Windows的特定文件.我希望在不向我的页面添加其他插件的情况下这样做.

Rob*_*obB 56

尝试:

var os = navigator.platform;

然后相应地处理os变量以获得结果.

您还可以遍历对象的每个对象,navigator以帮助您更熟悉对象:

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


Sha*_*awn 31

简单的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);
Run Code Online (Sandbox Code Playgroud)

尼克建议你也可以使用navigator.platform.

  • 当`navigator.platform`存在时,为什么要经历所有麻烦? (4认同)
  • 但是`appVersion` [也不赞成使用](https://developer.mozilla.org/en-US/docs/Web/API/NavigatorID.appVersion)? (3认同)
  • 因为不推荐使用`navigator.platform`。检查 https://developer.mozilla.org/en-US/docs/Web/API/NavigatorID.platform (2认同)

Vit*_*.us 14

据我所知platform,导航器对象上的欺骗性较小.你可以用它来获得布尔值.

var isMac = navigator.platform.toUpperCase().indexOf('MAC')!==-1;
var isWindows = navigator.platform.toUpperCase().indexOf('WIN')!==-1;
var isLinux = navigator.platform.toUpperCase().indexOf('LINUX')!==-1;
Run Code Online (Sandbox Code Playgroud)

如果您需要在旧的PowerPc和新的英特尔之间区分Mac.

var isMacPpc=navigator.platform==="MacPPC";
var isMacIntel=navigator.platform==="MacIntel";
Run Code Online (Sandbox Code Playgroud)

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


dav*_*ter 6

尝试:

alert(navigator.appVersion);
Run Code Online (Sandbox Code Playgroud)

这应该为您提供一个可以为操作系统解析的字符串.


小智 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>
Run Code Online (Sandbox Code Playgroud)

确保找到正确的下载链接,但不隐藏其他操作系统链接.人们可能仍然想要那些.

<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>
Run Code Online (Sandbox Code Playgroud)

还有一些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>
Run Code Online (Sandbox Code Playgroud)

现在,用户可以根据需要禁用或阻止javascripts.链接仍将存在,而不是使用Javascript编写链接,这需要javascript工作.

这是一个小提琴

http://jsfiddle.net/7fmJb/