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

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

Список до сих пор:

  • HP-UX
  • Linux i686
  • Linux armv7l
  • mac68k
  • MacPPC
  • MacIntel
  • SunOS
  • Win16
  • Win32
  • WinCE
  • iPhone
  • IPOD
  • IPad
  • Android
  • BlackBerry
  • Opera

Ответ 1

Отказ от ответственности: обратите внимание, что это свойство отправляется браузером и, таким образом, может быть подделано, как строки пользовательских агентов. Никогда не полагайтесь на объект 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 i686
  • Linux i686 on x86_64
  • Linux i686 X11: на основе X11 Window System
  • Linux MSM8960_v3.2.1.1_N_R069_Rev:18: Sony Xperia V
  • Linux ppc64
  • Linux x86_64
  • Linux x86_64 X11: на основе X11 Window System

Microsoft

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

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

Mozilla

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

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)

Solaris

  • 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 Window System

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

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

Ответ 2

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

Где строка 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 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

Ответ 3

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

+-----+--------------+--------------------------------------+
| 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