Каков список возможных значений для navigator.platform на сегодняшний день? [закрыто]

95

Я знаю, что это меняется довольно часто, но существует ли как можно более исчерпывающий список возможных значений, возвращаемых функцией navigator.platform?

Список на данный момент:

  • HP-UX
  • Linux i686
  • Linux armv7l
  • Mac68K
  • MacPPC
  • MacIntel
  • SunOS
  • Win16
  • Win32
  • WinCE
  • iPhone
  • iPod
  • iPad
  • Android
  • BlackBerry
  • Опера
Thomasstephn
источник
1
Вы смотрели browscap.ini? В начале этого года проект был перезагружен.
Робберт
1
Да, но он вообще не дает обновленного списка. Например, iPad в нем нет
thomasstephn

Ответы:

165

Отказ от ответственности: обратите внимание, что это свойство отправляется браузером и, следовательно, может быть подделано, как и строки пользовательского агента. Никогда не полагайтесь на navigatorточность объекта.

Определение

Насколько мне известно, не существует единого общедоступного списка всех возможных значений `navigator.platform`, хотя это свойство существует довольно давно. Что еще хуже, определение собственности менялось с годами. Это было:

navigator.platform указывает тип компьютера, для которого был скомпилирован браузер.

В основном это означает, что свойство может возвращаться, Win16когда пользователь запускает браузер, скомпилированный для 16-разрядной версии, даже если пользователь находится на 32-разрядной или 64-разрядной машине Windows.

Конечно, W3Schools перечисляет старое определение (я даже не буду ссылаться на них). W3 и MDN пришли к соглашению о другом определении:

navigator.platform представляет платформу, на которой выполняется браузер.

Тем не менее, это определение немного расплывчато. Десять лет назад «платформой» была либо архитектура ЦП, либо операционная система. В последние годы платформами могут быть и карманные компьютеры, и мультимедийные устройства.


Интерпретация

Как и все в Интернете, наша судьба находится в руках могущественных производителей браузеров. В этом случае все основные браузеры (IE, Safari, Firefox и Chrome) согласны с тем, что моя 64-разрядная машина Windows является платформой Win32. Это означает, что они придерживаются старого определения в Windows, потому что ни одно из них пока не скомпилировано для 64-битной версии. Однако посмотрите на светлую сторону: по крайней мере, все они хоть раз в чем-то согласны.

Похоже, нам немного повезло, когда дело касается карманных компьютеров и мультимедийных устройств. Как вы уже указали в своем вопросе, каждый из iPhone, iPod и iPad имеет уникальную ценность, хотя все они работают под одной и той же операционной системой. Все устройства Nintendo и Sony также возвращают уникальные значения. Так что только сейчас navigator.platformначинает выглядеть интересно.

Но затем появляется Opera Mini для iPhone, которая снова все портит. Opera Mini фактически возвращает номер версии движка кода, который представляет собой совершенно иную интерпретацию, platformчем все, с чем мы сталкивались до сих пор. Итак, теперь мы вернулись к тому, с чего начали, и начинаем понимать, почему так мало информации по этой теме.

Несмотря на то, что интерпретации различаются, и у меня нет для вас полного ответа, я действительно чувствовал, что должен добавить свои 2 цента для всех, кто исследует navigator.platformсобственность.


Список

Ниже приведен (определенно неопределенный) список значений, о которых я знаю, которые я мог бы проверить с помощью нескольких источников. Из-за расплывчатого определения я не совсем уверен, как лучше всего их заказать. На данный момент я разделил их на несколько категорий в зависимости от марки операционной системы или устройства и перечислил дополнительную информацию и даты выпуска, где это возможно.

Android

Тестировать на Android-устройствах действительно сложно. Устройства Android будут возвращаться Androidтак же часто, как и некоторые версии Linux. Например, на телефоне Nexus 5 возвращаются и браузер Android, и Chrome Linux armv7l. В редких случаях устройства Android могут даже вернуться null(вместо undefined).

  • Android (2008)
  • Linux: см. примечания выше
  • null

яблоко

Что касается iOS: Safari, Chrome и Mercury соглашаются, но Opera все портит.

  • iPhone (2007)
  • iPod (2007)
  • iPad (2010)
  • iPhone Simulator: симулятор поставляется с Xcode
  • iPod Simulator: симулятор поставляется с Xcode
  • iPad Simulator: симулятор поставляется с Xcode
  • Macintosh
  • MacIntel: Процессор Intel (2005 г.)
  • MacPPC: Процессор PowerPC
  • Mac68K: 68000 процессор
  • Pike v7.6 release 92: Opera Mini 5 на любом iPhone (2009 г.)
  • Pike v7.8 release 517: Opera Mini 7 на любом iPhone (2012 г.)

BlackBerry

  • BlackBerry (2003)

FreeBSD

  • FreeBSD
  • FreeBSD i386: процессор x86 (IA-32)
  • FreeBSD amd64: Процессор AMD x86-64

Linux

Серьезно ненадежно, потому что на этом построено так много платформ. Например, Chrome в ChromeOS или Linux x86-64 возвращаются Linux i686в том виде, для чего они были скомпилированы.

Примечание. Linux ARM перечисляет флаги архитектуры, например, armv5tejбудет обозначать архитектуру ARM v5 с поддержкой Thumb ('T'), набором инструкций DSP ('E') и поддержкой Jazelle ('J').

  • Linux
  • Linux aarch64
  • Linux armv5tejl
  • Linux armv6l
  • Linux armv7l
  • Linux armv8l
  • Linux i686
  • Linux i686 on x86_64
  • Linux i686 X11: на основе оконной системы X11
  • Linux MSM8960_v3.2.1.1_N_R069_Rev:18: Sony Xperia V
  • Linux ppc64
  • Linux x86_64
  • Linux x86_64 X11: на основе оконной системы X11

Microsoft

Даже в 64-битной Windows 8 они все придерживаются Win32.

  • OS/2 (1994 †)
  • Pocket PC
  • Windows
  • Win16: Windows 3.1x (1992 †)
  • Win32: Windows 95 и выше
  • WinCE

Mozilla (Firefox OS)

В браузере Firefox OS возвращается пустая строка. См. Этот отчет об ошибке .

KaiOS

Веб-браузер в KaiOS (на основе Firefox) также возвращает пустую строку (как Firefox OS). См. Этот отчет об ошибке .

Nintendo

  • New Nintendo 3DS (2014)
  • Nintendo DSi (2008)
  • Nintendo 3DS (2011)
  • Nintendo Wii (2006)
  • Nintendo WiiU (2012)

OpenBSD

  • OpenBSD amd64

Symbian / S40

  • Nokia_Series_40 (1999 †)
  • S60 (2002 †)
  • Symbian: Opera на Symbian
  • Symbian OS

Пальма

  • PalmOS (1996)
  • webOS (2009)

Солярис

  • SunOS
  • SunOS i86pc
  • SunOS sun4u: Процессор SPARC

Sony

  • PLAYSTATION 3 (2006)
  • PlayStation 4 (2013)
  • PSP: PlayStation Portable (2004)

Разные

  • HP-UX: Hewlett-Packard UniX
  • masking-agent: значение изменяется на это при использовании агента маскировки для Firefox
  • WebTV OS
  • X11: Оконная система X11

У вас есть устройство, которого нет в этом списке? Пожалуйста, оставьте комментарий, в котором перечислены свойства вашего устройства и его navigator.platformзначение (не стесняйтесь использовать этот JSFiddle, чтобы найти значение).

Надеюсь это поможет.

Роберт
источник
Рад помочь, Томас.
Робберт
К вашему сведению, некоторые 64-битные браузеры действительно существуют, даже IE, если вы можете его откопать. Таким образом, иногда может появиться Win64. Мой сниффер браузера настроен на его просмотр и пометку браузера как выполняющего 64-разрядную версию. В остальном очень полный список .. спасибо. :)
Безелит 05
В этом списке еще несколько: books.google.com/…
hexalys
@Bezelith: спасибо! Я также видел, как люди пытались обнаружить 64-битные системы с помощью navigator.cpuClassи navigator.appVersion, но пока ни одна из них не кажется надежной. @hexalys: спасибо вам тоже, я добавил эти строки в список.
Робберт
1
На данный момент я не могу проверить, но разве не будет такого для Xbox 360, Xbox One, PS4?
Джон Одом
21

Я могу добавить в этот список точные значения для конкретных устройств, которые я тестировал.

Там, где находится строка Linux armv7l, она заканчивается строчными буквами L(для «Linux, предположительно?»), А не числом 1или строчными буквами I.

Для устройств iOS тестирование проводилось в Safari. Для устройств Android тестирование проводилось в стандартном браузере или в Chrome, если стандартный браузер не был установлен.

Из планшетных устройств Windows Nokia Lumia работала под управлением Windows RT 8.1 с IE 11.0.9600.16476, а MS Surface работала под управлением Windows 8.1 Pro с IE 11.0.9600.16438.

Из телефонов Windows Phone Nokia Lumia работала под управлением Windows Phone 8.1 и IE 11.

Телефоны

Device                           OS               window.navigator.platform
---------------------------------------------------------------------------
iPhone 4                         iOS 7.1          iPhone
iPhone 5                         iOS 7.1.1        iPhone
iPhone 5c                        iOS 7.1          iPhone
iPhone 5s                        iOS 7.1          iPhone

Samsung Galaxy S2                Android 4.1.2    Linux armv7l
Samsung Galaxy S3 Mini           Android 4.1.2    Linux armv7l
Samsung Galaxy S3                Android 4.3      Linux armv7l
Samsung Galaxy S4                Android 4.4.2    Linux armv7l
Samsung Galaxy Note 3            Android 4.4.2    Linux armv7l
Samsung Galaxy S6                Android 5        Linux aarch64

Nexus 4                          Android 4.4.2    Linux armv7l
Nexus 5                          Android 4.4.2    Linux armv7l

HTC One                          Android 4.4.2    Linux armv7l
Sony Xperia Z                    Android 4.2.2    Linux armv7l
Motorola Moto G                  Android 4.4.2    Linux armv7l

Nokia Lumia 1520                 Windows 8.1      Win32

Таблетки

Device                           OS               window.navigator.platform
---------------------------------------------------------------------------
iPad 2nd generation              iOS 6.1.3        iPad
iPad 2nd generation              iOS 7.0.3        iPad
iPad 4th generation              iOS 6.1.2        iPad
iPad 4th generation              iOS 6.1.3        iPad
iPad mini (non retina)           iOS 6.1.3        iPad
iPad mini (retina)               iOS 7.0.3        iPad

Samsung Galaxy Tab 2 7"          Android 4.0.3    Linux armv7l
Samsung Galaxy Tab 3 7"          Android 4.1.2    Linux armv7l
Samsung Galaxy Tab 3             Android 4.2.2    Linux i686
Samsung Galaxy Note 10.1 (2012)  Android 4.1.2    Linux armv7l
Samsung Galaxy Note 10.1 (2014)  Android 4.3      Linux armv7l

Nexus 7 (2012) 7"                Android 4.4.3    Linux armv7l
Nexus 7 (2013) 7"                Android 4.3      Linux armv7l
Nexus 10                         Android 4.4.2    Linux armv7l

Lenovo Yoga                      Android 4.2.2    Linux armv7l
Sony Xperia Z                    Android 4.3      Linux armv7l
Tesco Hudl 7"                    Android 4.2.2    Linux armv7l
Kindle Fire 7" (2012)            Unknown          Linux armv7l
Kindle Fire HDX 7" (2013)        Unknown          Linux armv7l

Asus Transformer Pad TF300T      Android 4.0.3    Linux armv7l

Nokia Lumia 2520                 Windows RT 8.1   Win32
MS Surface Tablet Pro            Windows 8.1 Pro  Win64

Desktop PC (HP)                  Windows 7 Ent.   Win32
Desktop PC (iMac)                OSX 10.8.5       MacIntel
БиллиРейПречерзСын
источник
Отличное дополнение к моему первоначальному списку, хорошая работа! Однако даже iOS может возвращать другой идентификатор в другом браузере, особенно в Opera Mini. Нам нужен веб-сайт, который тестирует все комбинации устройства / ОС / браузера или что-то в этом роде ...
Робберт
1
Архитектуры ARM используют суффиксы в нижнем регистре для обозначения различных функций. Насколько мне известно, это lозначает little-endian (хранение LSB в наименьшем адресе, если это имеет смысл). Однако существует слишком много вариантов, чтобы отслеживать их.
Робберт
9

Я не смог опубликовать комментарий, поэтому оставлю следующие, которые, как мне кажется, не упомянуты выше:

+-----+--------------+--------------------------------------+
| iid | item         | value                                |
+-----+--------------+--------------------------------------+
| 448 | nav_platform | Linux armv7l                         |
| 454 | nav_platform | ARM                                  |
| 455 | nav_platform | Linux x86_64                         |
| 457 | nav_platform | PlayStation 4                        |
| 459 | nav_platform | masking-agent                        |
| 460 | nav_platform | OpenBSD amd64                        |
| 464 | nav_platform | FreeBSD amd64                        |
| 465 | nav_platform | Linux armv5tejl                      |
| 466 | nav_platform | Symbian OS                           |
| 467 | nav_platform | New Nintendo 3DS                     |
| 470 | nav_platform | Linux armv6l                         |
| 471 | nav_platform | FreeBSD                              |
| 472 | nav_platform | Symbian                              |
| 473 | nav_platform | Linux MSM8960_V3.2.1.1_N_R069_Rev:18 |
| 476 | nav_platform | Linux aarch64                        |
| 479 | nav_platform | Linux i686 on x86_64                 |
| 480 | nav_platform | Linux ppc64                          |
+-----+--------------+--------------------------------------+

"masking-agent" - это расширение конфиденциальности браузера, которое по умолчанию меняет платформу на эту.

Странно длинный - Sony Z10

Джастин
источник
Большое спасибо за эти дополнения. Я добавил их в список. Sony Z10теперь держит корону дольше всех navigator.platform.
Робберт
@justin Вы случайно не знаете, какое расширение конфиденциальности браузера меняет значение на "masking-agent"? изменить: неважно, я вижу addons.mozilla.org/en-US/firefox/addon/masking-agent , но, полагаю, мне все еще интересно, что такое Chrome или другие браузеры, если кто-нибудь знает.
user4851
@ user4851 addons.mozilla.org/en-US/firefox/addon/masking-agent больше не доступен
Christophe