JavaScript 判断是否为Mac系统

当我们开发功能涉及到键盘快捷键时(如 Ctrl+S 快速保存文档,Ctrl+Enter 换行), 我们要对Mac OS系统做特殊处理,因为Mac OS下是用Command表示Control,Ctrl+S 就变成了 Cmd+S


通过观察,我们可以发现User Agent是中带有系统标识的。

Window的User Agent例子,Windows NT 是系统标识。

Mozilla/5.0 (compatible; MSIE 10.0; Windows NT 6.2; Win64; x64; Trident/6.0)

Mac的User Agent例子,Mac OS X 是系统标识。

Mozilla/5.0 (Macintosh; Intel Mac OS X 10_12_4) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/58.0.3029.110 Safari/537.36


这时通过User Agent来检查,是最简单有效的办法。

<script>
if (navigator.userAgent.indexOf('Mac OS X') !== -1) {
  document.write('您是mac系统');
} else {
  document.write('您是pc系统');
}
</script>

尝试一下 »

通过User Agent判断,我们还可以给 body 加上系统的类名,针对系统做样式优化。

if (navigator.userAgent.indexOf('Mac OS X') !== -1) {
  $('body').addClass('mac');
} else {
  $('body').addClass('pc');
}

同理,需要输出到页面时,可以在PHP端判断User Agent

if (strpos($_SERVER['HTTP_USER_AGENT'], 'Mac OS X') === false) {
    $ctrlKey = 'Ctrl';
} else {
    $ctrlKey = 'Cmd';
}