Disclaimer: si prega di notare che questa proprietà viene inviata dal browser e può quindi essere falsificata, proprio come le stringhe dell'agente utente. Non fare mai affidamento navigator
sull'oggetto per essere completamente accurato.
La definizione
Per quanto ne so non esiste un unico elenco pubblico di tutti i possibili valori di `navigator.platform`, anche se la proprietà è in circolazione da un bel po '. A peggiorare le cose, la definizione della proprietà è cambiata nel corso degli anni. Era:
navigator.platform
indica il tipo di macchina per cui è stato compilato il browser.
Ciò significa fondamentalmente che la proprietà può essere restituita Win16
quando l'utente esegue un browser compilato per 16 bit, anche se l'utente si trova su una macchina Windows a 32 o 64 bit.
Ovviamente W3Schools elenca la vecchia definizione (non le collegherò nemmeno). Tuttavia, W3 e MDN hanno concordato una definizione diversa:
navigator.platform
rappresenta la piattaforma su cui è in esecuzione il browser.
Tuttavia, questa definizione è un po 'vaga. Un decennio fa una "piattaforma" poteva essere un'architettura CPU o un sistema operativo. Negli ultimi anni anche i dispositivi palmari e multimediali possono essere piattaforme.
L'interpretazione
Come per qualsiasi cosa sul Web, il nostro destino è nelle mani dei potenti fornitori di browser. In questo caso, tutti i principali browser (IE, Safari, Firefox e Chrome) concordano sul fatto che la mia macchina Windows a 64 bit è una piattaforma "Win32". Ciò significa che si attengono alla vecchia definizione per quanto riguarda Windows, perché nessuno di loro è stato compilato per 64 bit finora. Guarda il lato positivo però: almeno sono tutti d'accordo su qualcosa per una volta.
Sembra che siamo un po 'più fortunati quando si tratta di dispositivi portatili e multimediali. Come hai già affermato nella tua domanda, iPhone, iPod e iPad hanno ciascuno un valore unico, anche se eseguono tutti lo stesso sistema operativo. Anche tutti i dispositivi Nintendo e Sony stanno restituendo valori unici. Quindi solo ora navigator.platform
inizia a sembrare interessante.
Ma poi arriva Opera Mini per iPhone, che incasina di nuovo le cose. Opera Mini in realtà restituisce un numero di versione del motore di codice, che è un'interpretazione completamente diversa platform
rispetto a qualsiasi altra cosa che abbiamo incontrato finora. Quindi ora siamo tornati al punto di partenza e iniziamo a capire perché ci sono così poche informazioni su questo argomento là fuori.
Anche se le interpretazioni variano e non ho una risposta completa per te, mi sono sentito come se dovessi aggiungere i miei 2 centesimi per chiunque altro là fuori alla ricerca della navigator.platform
proprietà.
La lista
Di seguito è riportato un elenco (decisamente non definito) dei valori di cui sono a conoscenza che ho potuto verificare con più fonti. A causa della vaga definizione, non sono troppo sicuro di quale sia il modo migliore per ordinarli. Per ora li ho divisi in alcune categorie in base al sistema operativo o al marchio del dispositivo e ho elencato ulteriori informazioni e date di rilascio, ove applicabili.
Android
È davvero difficile testare per i dispositivi Android. I dispositivi Android torneranno Android
tanto spesso quanto alcune versioni di Linux. Ad esempio, su un telefono Nexus 5, vengono restituiti sia il browser Android che Chrome Linux armv7l
. In rari casi i dispositivi Android possono persino restituire null
(invece di undefined
).
Android
(2008)
Linux
: vedi note sopra
null
Mela
Per quanto riguarda iOS: Safari, Chrome e Mercury sono d'accordo, ma Opera incasina le cose.
iPhone
(2007)
iPod
(2007)
iPad
(2010)
iPhone Simulator
: simulatore fornito con Xcode
iPod Simulator
: simulatore fornito con Xcode
iPad Simulator
: simulatore fornito con Xcode
Macintosh
MacIntel
: Processore Intel (2005)
MacPPC
: Processore PowerPC
Mac68K
: 68000 processore
Pike v7.6 release 92
: Opera Mini 5 su qualsiasi iPhone (2009)
Pike v7.8 release 517
: Opera Mini 7 su qualsiasi iPhone (2012)
Mora
FreeBSD
FreeBSD
FreeBSD i386
: processore x86 (IA-32)
FreeBSD amd64
: Processore AMD x86-64
Linux
Seriamente inaffidabile perché così tante piattaforme sono costruite su questo. Ad esempio, Chrome su ChromeOS o Linux x86-64 restituiscono entrambi Linux i686
perché è quello per cui sono stati compilati.
Nota Linux ARM elenca i flag dell'architettura, ad esempio armv5tej
denoterebbe un'architettura ARM v5 con supporto Thumb ('T'), un set di istruzioni DSP ('E') e supporto Jazelle ('J').
Linux
Linux aarch64
Linux armv5tejl
Linux armv6l
Linux armv7l
Linux armv8l
Linux i686
Linux i686 on x86_64
Linux i686 X11
: basato su 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
: basato su X11 Window System
Microsoft
Anche su un Windows 8 a 64 bit si attengono tutti Win32
.
OS/2
(1994 †)
Pocket PC
Windows
Win16
: Windows 3.1x (1992 †)
Win32
: Windows 95 e versioni successive
WinCE
Mozilla (Firefox OS)
Viene restituita una stringa vuota nel browser Web su Firefox OS. Vedi questa segnalazione di bug .
KaiOS
Anche il browser web su KaiOS (basato su Firefox) restituisce la stringa vuota (uguale a Firefox OS). Vedi questa segnalazione di bug .
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 su Symbian
Symbian OS
Palma
PalmOS
(1996)
webOS
(2009)
Solaris
SunOS
SunOS i86pc
SunOS sun4u
: Processore SPARC
Sony
PLAYSTATION 3
(2006)
PlayStation 4
(2013)
PSP
: PlayStation Portable (2004)
Vari
HP-UX
: Hewlett-Packard UniX
masking-agent
: il valore cambia in questo quando si utilizza Masking Agent per Firefox
WebTV OS
X11
: X11 Window System
Hai un dispositivo che non è in questo elenco? Lascia un commento che elenchi le proprietà del tuo dispositivo e il suo navigator.platform
valore (sentiti libero di usare questo JSFiddle per trovare il valore).
Spero che questo ti aiuti.
browscap.ini
? Il progetto è stato riavviato all'inizio di quest'anno.