Apa daftar nilai yang mungkin untuk navigator.platform untuk hari ini? [Tutup]

95

Saya tahu bahwa ini cukup sering berubah, tetapi adakah daftar selengkap mungkin di luar sana dari kemungkinan nilai yang dikembalikan navigator.platform?

Daftar sejauh ini:

  • HP-UX
  • Linux i686
  • Linux armv7l
  • Mac68K
  • MacPPC
  • MacIntel
  • SunOS
  • Menang16
  • Win32
  • Menggerenyet
  • iPhone
  • iPod
  • iPad
  • Android
  • BlackBerry
  • Opera
thomasstephn
sumber
1
Apakah kamu sudah melihat browscap.ini? Proyek ini telah dimulai ulang awal tahun ini.
Robbert
1
Ya, tapi sama sekali tidak memberikan daftar yang diperbarui. Misalnya iPad tidak ada di dalamnya
thomasstephn

Jawaban:

165

Penafian: harap dicatat bahwa properti ini dikirim oleh browser dan dengan demikian dapat dipalsukan, seperti string agen pengguna. Jangan pernah mengandalkan navigatorobjek agar akurat sepenuhnya.

Definisi

Sejauh yang saya tahu, tidak ada satu pun daftar publik dari semua kemungkinan nilai `navigator.platform`, meskipun properti tersebut sudah ada cukup lama. Lebih buruk lagi, definisi properti berubah selama bertahun-tahun. Dulu:

navigator.platform menunjukkan jenis mesin yang dikompilasi browser.

Ini pada dasarnya berarti properti dapat kembali Win16ketika pengguna menjalankan browser yang dikompilasi untuk 16-bit, meskipun pengguna menggunakan mesin Windows 32-bit atau 64-bit.

Tentu saja W3Schools mencantumkan definisi lama (saya bahkan tidak akan menautkannya). W3 dan MDN telah menyepakati definisi yang berbeda:

navigator.platform mewakili platform tempat browser dijalankan.

Namun, definisi ini masih agak kabur. Satu dekade yang lalu 'platform' bisa berupa arsitektur CPU atau sistem operasi. Dalam beberapa tahun terakhir perangkat genggam dan media dapat menjadi platform juga.


Interpretasinya

Seperti semua yang ada di web, nasib kita ada di tangan vendor browser yang hebat. Dalam hal ini, semua browser utama (IE, Safari, Firefox dan Chrome) setuju bahwa mesin Windows 64-bit saya adalah platform `Win32`. Ini berarti mereka berpegang pada definisi lama sejauh Windows berjalan, karena tidak satupun dari mereka yang dikompilasi untuk 64-bit sejauh ini. Lihatlah sisi baiknya: setidaknya mereka semua menyetujui sesuatu untuk sekali.

Sepertinya kami sedikit lebih beruntung dalam hal perangkat genggam dan media. Seperti yang telah Anda nyatakan dalam pertanyaan Anda, iPhone, iPod dan iPad masing-masing memiliki nilai yang unik, meskipun semuanya menjalankan sistem operasi yang sama. Semua perangkat Nintendo dan Sony juga mengembalikan nilai unik. Jadi baru sekarang navigator.platformmulai terlihat menarik.

Tapi kemudian Opera Mini untuk iPhone muncul, mengacaukan segalanya lagi. Opera Mini sebenarnya mengembalikan nomor versi mesin kode, yang merupakan interpretasi yang sama sekali berbeda dari platformapa pun yang kami temui sejauh ini. Jadi sekarang kita kembali ke awal dan kita mulai memahami mengapa hanya ada sedikit informasi tentang hal ini di luar sana.

Meskipun interpretasinya bervariasi dan saya tidak memiliki jawaban lengkap untuk Anda, saya merasa saya harus menambahkan 2 sen saya untuk orang lain di luar sana yang meneliti navigator.platformproperti tersebut.


Daftar

Di bawah ini adalah daftar (pasti tidak pasti) dari nilai-nilai yang saya tahu yang dapat saya verifikasi dengan berbagai sumber. Karena definisi yang tidak jelas, saya tidak terlalu yakin cara terbaik untuk memesan ini. Untuk saat ini saya membaginya menjadi beberapa kategori berdasarkan sistem operasi atau merek perangkat dan mencantumkan informasi tambahan dan tanggal rilis jika berlaku.

Android

Sangat sulit untuk menguji perangkat Android. Perangkat Android akan kembali Androidsesering beberapa versi Linux. Misalnya pada ponsel Nexus 5, browser Android dan Chrome kembali Linux armv7l. Dalam kasus yang jarang terjadi, perangkat Android bahkan dapat kembali null(bukan undefined).

  • Android (2008)
  • Linux: lihat catatan di atas
  • null

apel

Sejauh iOS berjalan: Safari, Chrome dan Mercury setuju, tetapi Opera mengacaukan segalanya.

  • iPhone (2007)
  • iPod (2007)
  • iPad (2010)
  • iPhone Simulator: simulator dikirimkan dengan Xcode
  • iPod Simulator: simulator dikirimkan dengan Xcode
  • iPad Simulator: simulator dikirimkan dengan Xcode
  • Macintosh
  • MacIntel: Prosesor Intel (2005)
  • MacPPC: Prosesor PowerPC
  • Mac68K: 68000 prosesor
  • Pike v7.6 release 92: Opera Mini 5 di semua iPhone (2009)
  • Pike v7.8 release 517: Opera Mini 7 di semua iPhone (2012)

BlackBerry

  • BlackBerry (2003)

FreeBSD

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

Linux

Serius tidak dapat diandalkan karena begitu banyak platform dibangun di atas ini. Misalnya, Chrome di ChromeOS atau Linux x86-64 keduanya kembali Linux i686seperti yang mereka kompilasi.

Catatan Linux ARM mencantumkan tanda arsitektur, misalnya armv5tejakan menunjukkan arsitektur ARM v5 dengan dukungan Thumb ('T'), set instruksi DSP ('E'), dan dukungan Jazelle ('J').

  • Linux
  • Linux aarch64
  • Linux armv5tejl
  • Linux armv6l
  • Linux armv7l
  • Linux armv8l
  • Linux i686
  • Linux i686 on x86_64
  • Linux i686 X11: berdasarkan Sistem Jendela X11
  • Linux MSM8960_v3.2.1.1_N_R069_Rev:18: Sony Xperia V
  • Linux ppc64
  • Linux x86_64
  • Linux x86_64 X11: berdasarkan Sistem Jendela X11

Microsoft

Bahkan pada 64-bit Windows 8 mereka semua tetap berpegang Win32.

  • OS/2 (1994 †)
  • Pocket PC
  • Windows
  • Win16: Windows 3.1x (1992 †)
  • Win32: Windows 95 dan yang lebih baru
  • WinCE

Mozilla (Firefox OS)

String kosong dikembalikan di browser web pada Firefox OS. Lihat laporan bug ini .

KaiOS

Browser web di KaiOS (berdasarkan Firefox) juga mengembalikan string kosong (sama seperti Firefox OS). Lihat laporan bug ini .

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

telapak tangan

  • PalmOS (1996)
  • webOS (2009)

Solaris

  • SunOS
  • SunOS i86pc
  • SunOS sun4u: Prosesor SPARC

Sony

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

Berbagai

  • HP-UX: Hewlett-Packard UniX
  • masking-agent: nilai berubah menjadi ini saat menggunakan Masking Agent untuk Firefox
  • WebTV OS
  • X11: Sistem Jendela X11

Punya perangkat yang tidak ada dalam daftar ini? Silakan tinggalkan komentar yang mencantumkan properti perangkat Anda dan navigator.platformnilainya (jangan ragu untuk menggunakan JSFiddle ini untuk menemukan nilainya).

Semoga ini membantu.

Robbert
sumber
Senang bisa membantu, Thomas.
Robbert
FYI, beberapa browser 64-bit memang ada, bahkan IE, jika Anda dapat menggalinya. Jadi, Win64 terkadang bisa muncul. Pelacak browser saya disetel untuk melihatnya, dan menandai browser sebagai menjalankan 64-bit. Daftar yang sangat lengkap jika tidak .. terima kasih. :)
Bezelith
Ada beberapa lagi di daftar ini: books.google.com/…
hexalys
@Bezelith: terima kasih! Saya juga melihat orang-orang mencoba mendeteksi sistem 64-bit dengan navigator.cpuClassdan navigator.appVersion, tetapi sejauh ini tidak ada yang dapat diandalkan. @hexalys: terima kasih juga, saya telah menambahkan string itu ke daftar.
Robbert
1
Saya tidak dapat memeriksa saat ini tetapi bukankah akan ada satu untuk Xbox 360, Xbox One, PS4 juga?
John Odom
21

Saya dapat menambahkan ke daftar ini dengan nilai pasti untuk perangkat tertentu yang telah saya uji.

Dimana stringnya Linux armv7l, itu diakhiri dengan huruf kecil L(untuk "Linux, mungkin?), Bukan angka 1atau huruf kecil I.

Untuk perangkat iOS, pengujian dilakukan di Safari. Untuk perangkat Android, pengujian dilakukan di browser stok, atau Chrome jika tidak ada browser stok yang dipasang.

Dari perangkat tablet Windows, Nokia Lumia menjalankan Windows RT 8.1 dengan IE 11.0.9600.16476, dan MS Surface menjalankan Windows 8.1 Pro dengan IE 11.0.9600.16438.

Dari perangkat ponsel Windows, Nokia Lumia menjalankan Windows Phone 8.1 dan IE 11.

Telepon

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

Tablet

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
BillyRayPreachersSon
sumber
Tambahan yang bagus untuk percobaan daftar awal saya, kerja bagus! Bahkan iOS masih dapat mengembalikan pengenal yang berbeda di browser yang berbeda - terutama Opera Mini. Kami membutuhkan situs web yang menguji semua kombinasi perangkat / OS / browser atau sesuatu ...
Robbert
1
Arsitektur ARM menggunakan sufiks huruf kecil untuk menandakan fitur varian. Sejauh yang saya tahu lsingkatan dari little-endian (menyimpan LSB di alamat terkecil, jika itu masuk akal). Ada terlalu banyak varian untuk diperhatikan.
Robbert
9

Saya tidak dapat mengirim komentar, jadi saya meninggalkan yang ini yang menurut saya tidak disebutkan di atas:

+-----+--------------+--------------------------------------+
| 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" adalah ekstensi privasi browser yang mengubah platform secara default ke itu.

Yang panjang dan aneh adalah Sony Z10

justin
sumber
Terima kasih banyak atas tambahan ini. Saya telah menambahkan mereka ke daftar. Sony Z10sekarang memegang mahkota untuk navigator.platformnilai terpanjang .
Robbert
@justin Apakah Anda kebetulan mengetahui ekstensi privasi browser apa yang mengubah nilai menjadi "masking-agent"? edit: tidak apa-apa, saya melihat addons.mozilla.org/en-US/firefox/addon/masking-agent , tapi saya kira saya masih bertanya-tanya tentang Chrome atau browser lain, jika ada yang tahu.
pengguna4851
@ user4851 addons.mozilla.org/en-US/firefox/addon/masking-agent tidak lagi tersedia
Christophe Roussy