JavaScript для определения ОС в Chrome версии 37.0.2062.94

Я разрабатываю одностраничные приложения. Ярлык должен отличаться в разных ОС, особенно в Mac OS X. Другие обычно сочетают нажатие клавиш с Ctrl, но Mac сочетается с Cmd.

До сих пор я пытался определить, является ли ОС Mac или нет, с помощью этого кода:

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

Этот код работал хорошо. Однако после обновления Chrome до последней версии (37.0.2062.94) он больше не работает.

Есть ли способ обнаружить хост ОС браузера в JavaScript?

Я проверил Google Docs в Chrome, и его ярлык хорошо работал с Cmd в Mac и Ctrl в Window. Должен быть способ обнаружить ОС в JavaScript в Chrome.

РЕДАКТИРОВАТЬ Я погуглил и нашел несколько страниц об обнаружении ОС в javascript:

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"

С navigation.userAgentВы должны хорошо идти, но вы должны разобрать ответ. Это очень хороший небольшой javascript для определения ОС, браузера, устройства, версии устройства и т. Д. Добавляя классы к html тег. Он предназначен, чтобы помочь вам со стилями CSS, но у него есть и другие применения.

Например, после запуска этого небольшого JavaScript вы получите:

<html class="webkit chrome mac">
Другие вопросы по тегам