Я знаю, что это меняется довольно часто, но существует ли как можно более исчерпывающий список возможных значений, возвращаемых функцией navigator.platform
?
Список на данный момент:
- HP-UX
- Linux i686
- Linux armv7l
- Mac68K
- MacPPC
- MacIntel
- SunOS
- Win16
- Win32
- WinCE
- iPhone
- iPod
- iPad
- Android
- BlackBerry
- Опера
javascript
Thomasstephn
источник
источник
browscap.ini
? В начале этого года проект был перезагружен.Ответы:
Отказ от ответственности: обратите внимание, что это свойство отправляется браузером и, следовательно, может быть подделано, как и строки пользовательского агента. Никогда не полагайтесь на
navigator
точность объекта.Определение
Насколько мне известно, не существует единого общедоступного списка всех возможных значений `navigator.platform`, хотя это свойство существует довольно давно. Что еще хуже, определение собственности менялось с годами. Это было:В основном это означает, что свойство может возвращаться,
Win16
когда пользователь запускает браузер, скомпилированный для 16-разрядной версии, даже если пользователь находится на 32-разрядной или 64-разрядной машине Windows.Конечно, W3Schools перечисляет старое определение (я даже не буду ссылаться на них). W3 и MDN пришли к соглашению о другом определении:
Тем не менее, это определение немного расплывчато. Десять лет назад «платформой» была либо архитектура ЦП, либо операционная система. В последние годы платформами могут быть и карманные компьютеры, и мультимедийные устройства.
Интерпретация
Как и все в Интернете, наша судьба находится в руках могущественных производителей браузеров. В этом случае все основные браузеры (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, и ChromeLinux armv7l
. В редких случаях устройства Android могут даже вернутьсяnull
(вместоundefined
).Android
(2008)Linux
: см. примечания вышеnull
яблоко
Что касается iOS: Safari, Chrome и Mercury соглашаются, но Opera все портит.
iPhone
(2007)iPod
(2007)iPad
(2010)iPhone Simulator
: симулятор поставляется с XcodeiPod Simulator
: симулятор поставляется с XcodeiPad Simulator
: симулятор поставляется с XcodeMacintosh
MacIntel
: Процессор Intel (2005 г.)MacPPC
: Процессор PowerPCMac68K
: 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-64Linux
Серьезно ненадежно, потому что на этом построено так много платформ. Например, 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
: на основе оконной системы X11Linux MSM8960_v3.2.1.1_N_R069_Rev:18
: Sony Xperia VLinux ppc64
Linux x86_64
Linux x86_64 X11
: на основе оконной системы X11Microsoft
Даже в 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 на SymbianSymbian OS
Пальма
PalmOS
(1996)webOS
(2009)Солярис
SunOS
SunOS i86pc
SunOS sun4u
: Процессор SPARCSony
PLAYSTATION 3
(2006)PlayStation 4
(2013)PSP
: PlayStation Portable (2004)Разные
HP-UX
: Hewlett-Packard UniXmasking-agent
: значение изменяется на это при использовании агента маскировки для FirefoxWebTV OS
X11
: Оконная система X11У вас есть устройство, которого нет в этом списке? Пожалуйста, оставьте комментарий, в котором перечислены свойства вашего устройства и его
navigator.platform
значение (не стесняйтесь использовать этот JSFiddle, чтобы найти значение).Надеюсь это поможет.
источник
navigator.cpuClass
иnavigator.appVersion
, но пока ни одна из них не кажется надежной. @hexalys: спасибо вам тоже, я добавил эти строки в список.Я могу добавить в этот список точные значения для конкретных устройств, которые я тестировал.
Там, где находится строка
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
источник
l
означает little-endian (хранение LSB в наименьшем адресе, если это имеет смысл). Однако существует слишком много вариантов, чтобы отслеживать их.Я не смог опубликовать комментарий, поэтому оставлю следующие, которые, как мне кажется, не упомянуты выше:
+-----+--------------+--------------------------------------+ | 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
.