Определить, является ли установка браузера Chrome 64-разрядной

Я пытаюсь выполнить сценарий, который должен работать только в браузерах 64-разрядной версии Chrome. Есть ли способ проверить с помощью JavaScript, является ли версия Chrome, установленная на компьютере пользователя, 64-разрядной или 32-разрядной? t должен зависеть от браузера, потому что, например, я использую 64-разрядную ОС и 32-разрядную версию Chrome.

Пока мне удалось определить, является ли открытый браузер Chrome и какая его версия использует Bowser. Но я все еще борюсь с обнаружением 64-битного браузера.


person Jasna Trengoska    schedule 28.11.2014    source источник
comment
Разве вы не можете найти эту информацию в строке UA?   -  person PeeHaa    schedule 28.11.2014
comment
Вот пример такой строки: Mozilla / 5.0 (Windows NT 6.3; WOW64) AppleWebKit / 537.36 (KHTML, как Gecko) Chrome / 39.0.2171.71 Safari / 537.36 И здесь WOW64 указывает на 32-битную версию, но тогда это для Windows, а как насчет iOS и Linux?   -  person Jasna Trengoska    schedule 28.11.2014
comment
Вы когда-нибудь догадывались об этом?   -  person Max Williams    schedule 13.05.2015
comment
Почему вам нужно специально определять 64-битный Chrome? Вы уверены, что в чем бы заключалась ваша проблема, нельзя обойти с помощью функции обнаружения?   -  person Sam Hanley    schedule 14.05.2015
comment
@sphanley - Поддержка NPAPI (требуется для Shockwave, плагина, который мы используем) была удалена из 64-битного Chrome и отключена в 32-битном Chrome. Итак, если мы знаем, что кто-то находится в 32-битном Chrome, мы можем сказать, что вы можете включить Shockwave, выполнив следующие действия ... и если мы знаем, что они находятся в 64-битном Chrome, мы можем сказать, что вы больше не можете использовать Shockwave в Chrome - пожалуйста, используйте другой браузер. Это будет до сентября, когда он будет удален и из 32-битного хрома. Мы конвертируем ресурсы в безударные, но тем временем мы находимся в сложном переходном периоде, и нам нужно давать пользователям самые полезные советы.   -  person Max Williams    schedule 19.05.2015
comment
И, похоже, нет способа программно отличить пользователя, который еще не установил Shockwave, и того, кто его установил, но отключил с помощью параметра NPAPI.   -  person Max Williams    schedule 19.05.2015
comment
В этом случае возникают другие связанные вопросы: stackoverflow.com/questions/28766423/   -  person Sam Hanley    schedule 19.05.2015
comment
И если все, что вы делаете в этих случаях, показывает разные сообщения, рассматривали ли вы просто отображение комбинированного сообщения, в котором говорится, что если вы используете 32-битный Chrome, включить через [...], не поддерживается в 64-битном? Любой пользователь, который достаточно технически подкован, чтобы возиться с настройками своего браузера, чтобы использовать устаревшее веб-приложение, вероятно, сможет самостоятельно проверить свою версию Chrome.   -  person Sam Hanley    schedule 19.05.2015


Ответы (3)


Подробное обсуждение этого вопроса см.

Суть в том, что вы ищете свойство navigator.platform, которое возвращает платформу браузера, а не операционную систему.

Вы также можете взглянуть на platform.js, библиотеку обнаружения платформ.

ИЗМЕНИТЬ

После изучения этого вопроса кажется, что, хотя navigator.platform должен отражать платформу браузера, фактическое возвращаемое значение не всегда полезно.

Например, в Windows и 32-разрядная, и 64-разрядная версии возвращают «Win32». В этом случае строка пользовательского агента имеет лучшее значение: WOW64 для 32-разрядного браузера или x64 для 64-разрядного.

В конечном итоге кажется, что лучшим решением будет полагаться на канонические списки, как в связанных вопросах, или использовать библиотеку, такую ​​как platform.js.

person Sarah Elan    schedule 13.05.2015
comment
navigator.platform относится к ОС, не так ли, а не к версии Chrome? Я посмотрел на platform.js, и он просто разделяет строку userAgent. Действительно досадная проблема заключается в том, что если вы перейдете на страницу «О программе», там будет указана версия, а затем (64-разрядная) после нее, если это 64-разрядная версия Chrome. Но этот дополнительный бит в квадратных скобках не добавляется в строку userAgent. - person Max Williams; 14.05.2015
comment
WOW64 на самом деле очень ценная информация - если вы ее видите, значит, ОС 64-битная, а Chrome 32-битная. В итоге я сказал, что если мы видим WOW64, это 32-битный хром. Иначе 1) это винда? Если это окна, можем ли мы увидеть 64 в части ОС? Если так, то это 64-битный хром. Если нет, то это 32-битный хром. 2) Это Mac? На Mac не так-то просто отличить ... - person Max Williams; 19.05.2015
comment
Я даю награду за этот ответ, поскольку он указал мне на WOW64, который был ключевым. Мне нужно немного реорганизовать свой код, а затем я опубликую свой ответ, включая свои js-функции. - person Max Williams; 19.05.2015

Основываясь на том, что я нашел, вам следует попробовать найти следующие строки

  • x86_64
  • x86-64
  • Win64
  • x64; (Обратите внимание на точку с запятой! Без нее будут ложные срабатывания.)
  • amd64
  • AMD64
  • WOW64
  • x64_64
person dakotaeggers3    schedule 13.05.2015
comment
Вы уверены, что это не относится к тому, является ли платформа (то есть операционная система) 64-битной? - person Max Williams; 13.05.2015
comment
для меня x64 появился после того, как я обновился, Win64 уже был там. - person dandavis; 13.05.2015
comment
WOW64 - это 32-битный режим в Windows. - person Sarah Elan; 14.05.2015

navigator.userAgent содержит "WOW64" "Mozilla / 5.0 (Windows NT 6.1; WOW64) AppleWebKit / 537.36 (KHTML, например Gecko) Chrome / 43.0.2357.65 Safari / 537.36"

person Nat Geo    schedule 18.05.2015
comment
См. комментарий запрашивающего выше. - person Sarah Elan; 18.05.2015