Qual é a lista de valores possíveis para o navigator.platform a partir de hoje?

Eu sei que isso muda com bastante frequência, mas existe uma lista tão exaustiva quanto possível dos valores possíveis retornados por navigator.platform ?

Lista até agora:

  • HP-UX
  • Linux i686
  • Armv7l Linux
  • Mac68K
  • MacPPC
  • MacIntel
  • SunOS
  • Win16
  • Win32
  • WinCE
  • Iphone
  • iPod
  • iPad
  • Android
  • Amora
  • Ópera

Isenção de responsabilidade: observe que essa propriedade é enviada pelo navegador e pode, assim, ser falsificada, assim como as strings do agente do usuário. Nunca confie no object do navigator para ser completamente preciso.

A definição

Até onde eu sei, não existe uma única lista pública de todos os valores possíveis de navigator.platform , mesmo que a propriedade tenha existido por um bom tempo. Para piorar as coisas, a definição da propriedade mudou ao longo dos anos. Costumava ser:

navigator.platform indica o tipo de máquina para a qual o navegador foi compilado.

Isso basicamente significa que a propriedade pode retornar o Win16 quando o usuário estiver executando um navegador compilado para 16 bits, mesmo que o usuário esteja em uma máquina Windows de 32 ou 64 bits.

É claro que o W3Schools lista a definição antiga (eu nem vou ligar para elas). O W3 e o MDN concordaram com uma definição diferente:

navigator.platform representa a plataforma na qual o navegador está sendo executado.

Ainda assim, essa definição é um pouco vaga. Há uma década, uma “plataforma” seria uma arquitetura de CPU ou um sistema operacional. Nos últimos anos, dispositivos portáteis e de mídia também podem ser plataformas.

A interpretação

Como acontece com tudo na web, nosso destino está nas mãos dos poderosos fornecedores de navegadores. Nesse caso, todos os principais navegadores (IE, Safari, Firefox e Chrome) concordam que minha máquina Windows de 64 bits é uma plataforma Win32 . Isso significa que eles estão aderindo à definição antiga no que diz respeito ao Windows, porque nenhum deles é compilado para 64 bits até o momento. Olhe pelo lado bom: pelo menos todos concordam com algo pelo menos uma vez.

Parece que temos um pouco mais de sorte quando se trata de dispositivos portáteis e de mídia. Como você já afirmou em sua pergunta, o iPhone, o iPod e o iPad têm um valor único, apesar de estarem todos executando o mesmo sistema operacional. Todos os dispositivos da Nintendo e da Sony estão retornando valores exclusivos também. Então, só agora navigator.platform está começando a parecer interessante.

Mas então o Opera Mini para iPhone aparece, bagunçando as coisas novamente. O Opera Mini na verdade retorna um número de versão do mecanismo de código, que é uma interpretação completamente diferente da platform que qualquer coisa que tenhamos encontrado até agora. Então agora estamos de volta onde começamos e começamos a entender por que há tão pouca informação sobre este assunto lá fora.

Mesmo que as interpretações variem e eu não tenha uma resposta completa para você, eu senti que deveria adicionar meus 2 centavos para qualquer outra pessoa que estivesse pesquisando a propriedade navigator.platform .

A lista

Abaixo está uma lista (definitivamente não definida) dos valores que eu sei que eu poderia verificar com várias fonts. Por causa da definição vaga, não tenho muita certeza de qual é a melhor maneira de fazer isso. Por ora, dividi-as em algumas categorias com base no sistema operacional ou na marca do dispositivo e listei informações adicionais e datas de lançamento, quando aplicável.

Android

É muito difícil testar para dispositivos Android. Os dispositivos Android retornarão o Android a mesma frequência que algumas versões do Linux. Por exemplo, em um telefone Nexus 5, o navegador Android e o Chrome retornam o Linux armv7l . Em casos raros, os dispositivos Android podem até mesmo retornar null (em vez de undefined ).

  • Android (2008)
  • Linux : veja as notas acima
  • null

maçã

No que diz respeito ao iOS, o Safari, o Chrome e o Mercury concordam, mas o Opera estraga tudo.

  • iPhone (2007)
  • iPod (2007)
  • iPad (2010)
  • iPhone Simulator : simulador enviado com o Xcode
  • iPod Simulator : simulador enviado com o Xcode
  • iPad Simulator : simulador enviado com o Xcode
  • Macintosh
  • MacIntel : processador Intel (2005)
  • MacPPC : processador PowerPC
  • Mac68K : processador 68000
  • Pike v7.6 release 92 : Opera Mini 5 em qualquer iPhone (2009)
  • Pike v7.8 release 517 : Opera Mini 7 em qualquer iPhone (2012)

Amora

  • BlackBerry (2003)

FreeBSD

  • FreeBSD
  • FreeBSD i386 : processador x86 (IA-32)
  • FreeBSD amd64 : processador AMD x86-64

Linux

Seriamente não confiável porque muitas plataformas são construídas sobre isso. Por exemplo, o Chrome no ChromeOS ou o Linux x86-64 retornam o Linux i686 pois é para isso que eles foram compilados.

Nota O Linux ARM lista sinalizadores de arquitetura, por exemplo, armv5tej denota uma arquitetura ARM v5 com suporte a Thumb (‘T’), um conjunto de instruções DSP (‘E’) e suporte a Jazelle (‘J’).

  • Linux
  • Linux aarch64
  • Linux armv5tejl
  • Linux armv6l
  • Linux armv7l
  • Linux i686
  • Linux i686 on x86_64
  • Linux i686 X11 : baseado no sistema de janelas X11
  • Linux MSM8960_v3.2.1.1_N_R069_Rev:18 : Sony Xperia V
  • Linux ppc64
  • Linux x86_64
  • Linux x86_64 X11 : baseado no sistema de janelas X11

Microsoft

Mesmo em um Windows 8 de 64 bits, todos eles aderem ao Win32 .

  • OS/2 (1994 †)
  • Pocket PC
  • Windows
  • Win16 : Windows 3.1x (1992 †)
  • Win32 : Windows 95 e superior
  • WinCE

Mozilla

Uma string vazia é retornada no Firefox OS. Veja este relatório de bug .

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 no Symbian
  • Symbian OS

Palma

  • PalmOS (1996)
  • webOS (2009)

Solaris

  • SunOS
  • SunOS i86pc
  • SunOS sun4u : processador SPARC

Sony

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

Vários

  • HP-UX : Hewlett-Packard UniX
  • masking-agent : o valor muda para isso ao usar o Masking Agent for Firefox
  • WebTV OS
  • X11 : sistema de janela X11

Tem um dispositivo que não está nessa lista? Por favor, deixe um comentário listando as propriedades do seu dispositivo e seu valor navigator.platform ( fique à vontade para usar este JSFiddle para encontrar o valor).

Espero que isto ajude.

Eu posso adicionar a esta lista com valores definitivos para dispositivos específicos que testei.

Onde a cadeia é Linux armv7l , ela termina em um L minúsculo (para “Linux, presumivelmente?”), Em vez de ser um número 1 ou minúsculo.

Para os dispositivos iOS, o teste foi realizado no Safari. Para os dispositivos Android, o teste foi realizado no navegador de ações ou no Chrome, se nenhum navegador de ações foi instalado.

Dos dispositivos tablet Windows, o Nokia Lumia estava executando o Windows RT 8.1 com o IE 11.0.9600.16476, e o MS Surface estava executando o Windows 8.1 Pro com o IE 11.0.9600.16438.

Dos dispositivos de telefones Windows, o Nokia Lumia estava executando o Windows Phone 8.1 e o IE 11.

Telefones

 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 

Comprimidos

 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 

Eu não pude postar um comentário, então deixo esses que não são mencionados acima:

 +-----+--------------+--------------------------------------+ | 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” é uma extensão de privacidade do navegador que altera a plataforma por padrão para isso.

O estranho longo é um Sony Z10