【问题标题】:JavaScript to detect OS in Chrome Version 37.0.2062.94在 Chrome 版本 37.0.2062.94 中检测操作系统的 JavaScript
【发布时间】:2014-10-23 05:08:15
【问题描述】:

我正在开发单页应用程序。快捷键应该因操作系统不同而不同,尤其是Mac OS X。其他的通常将keystroke与Ctrl结合,但Mac与Cmd结合。

到目前为止,我试图通过这段代码检测操作系统是否为mac:

var bMac = navigator.appVersion.indexOf('Mac') > -1;

这段代码运行良好。 但是,在将 Chrome 更新到最新版本 (37.0.2062.94) 后,它不再工作了。

有没有办法在 JavaScript 中检测浏览器的宿主操作系统?

我在 Chrome 中查看了 Google Docs,它的快捷方式与 Mac 中的 Cmd 和 Window 中的 Ctrl 配合得很好。应该有一种方法可以在 Chrome 中检测 JavaScript 中的操作系统。

编辑 我用谷歌搜索并找到了一些关于在 javascript 中检测操作系统的页面:

【问题讨论】:

标签: javascript google-chrome os-detection


【解决方案1】:

使用navigation.userAgent你应该很好,但你必须解析响应。这是一个很好的small javascript 来检测操作系统、浏览器、设备、设备版本等。通过向html 标签添加类。它旨在帮助您处理 css 样式,但它也有其他用途。

例如,在运行那个小 javascript 之后,您将拥有:

<html class="webkit chrome mac">

【讨论】:

    【解决方案2】:

    升级版本时似乎出现了一些意想不到的副作用。还是很难理解。

    当我查看navigator.appVersion 时,发现有Linux; Android... 看起来很奇怪。

    > navigator.appVersion
      "5.0 (Linux; Android 4.2.2; GT-I9505 Build/JDQ39) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/31.0.1650.59 Mobile Safari/537.36"
    

    我检查了开发者工具中的Emulation 选项卡,它看起来像这样:

    奇怪的是,这个标签通常是空的。反正 在我点击标签中的Reset 按钮后,它又回来了。

    > navigator.appVersion
      "5.0 (Macintosh; Intel Mac OS X 10_9_4) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/37.0.2062.94 Safari/537.36"
    

    【讨论】:

      猜你喜欢
      • 2011-07-08
      • 2012-02-05
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-02-02
      • 1970-01-01
      • 2012-03-29
      • 1970-01-01
      相关资源
      最近更新 更多