Отказ от ответственности: обратите внимание, что это свойство отправляется браузером и, следовательно, может быть подделано, как и строки пользовательского агента. Никогда не полагайтесь на 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
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
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, чтобы найти значение).
Надеюсь это поможет.
browscap.ini
? В начале этого года проект был перезагружен.