104

我知道这种情况经常发生变化,但是是否有一个尽可能详尽的列表来列出由 ? 返回的可能值navigator.platform

到目前为止的清单:

  • 惠普-UX
  • Linux i686
  • Linux armv7l
  • Mac68K
  • MacPPC
  • 麦克英特尔
  • 太阳操作系统
  • Win16
  • Win32
  • WinCE
  • 苹果手机
  • iPod
  • iPad
  • 安卓
  • 黑莓
  • 歌剧
4

3 回答 3

183

免责声明:请注意此属性是由浏览器发送的,因此可以被伪造,就像用户代理字符串一样。永远不要依赖navigator对象是完全准确的。

定义

据我所知,没有一个公开的所有可能的 `navigator.platform` 值的列表,尽管该属性已经存在了很长时间。更糟糕的是,该物业的定义多年来发生了变化。它曾经是:

navigator.platform指示为其编译浏览器的机器类型。

这基本上意味着Win16当用户运行为 16 位编译的浏览器时,该属性可以返回,即使用户在 32 位或 64 位 Windows 机器上也是如此。

当然,W3Schools 列出了旧定义(我什至不会链接到它们)。W3MDN已就不同的定义达成一致:

navigator.platform表示浏览器正在执行的平台。

不过,这个定义还是有点模糊。十年前,“平台”要么是 CPU 架构,要么是操作系统。近年来,手持设备和媒体设备也可以成为平台。


解释

与网络上的一切一样,我们的命运掌握在强大的浏览器供应商手中。在这种情况下,所有主流浏览器(IE、Safari、Firefox 和 Chrome)都同意我的 64 位 Windows 机器是一个 `Win32` 平台。这意味着就 Windows 而言,它们都坚持旧定义,因为到目前为止,它们都没有被编译为 64 位。不过从好的方面看:至少他们都同意一次。

在手持设备和媒体设备方面,我们似乎更幸运一些。正如您在问题中已经说过的,iPhone、iPod 和 iPad 各有其独特的价值,即使它们都运行相同的操作系统。任天堂和索尼的所有设备也都返回了独特的价值。所以现在才navigator.platform开始看起来很有趣。

但随后 Opera Mini for iPhone 出现了,又把事情搞砸了。platformOpera Mini 实际上会返回一个代码引擎版本号,这与我们迄今为止遇到的任何内容都完全不同。所以现在我们回到了我们开始的地方,我们开始理解为什么关于这个主题的信息如此之少。

尽管解释各不相同,而且我没有给你一个完整的答案,但我确实觉得我应该为其他研究该navigator.platform房产的人加上我的 2 美分。


名单

下面是我知道的值的(绝对不确定的)列表,我可以通过多个来源进行验证。由于定义模糊,我不太确定订购这些的最佳方式是什么。目前,我根据操作系统或设备品牌将它们分为几类,并列出了适用的附加信息和发布日期。

安卓

测试安卓设备真的很难。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: 英特尔处理器 (2005)
  • MacPPC:PowerPC处理器
  • Mac68K: 68000 处理器
  • Pike v7.6 release 92: 任何 iPhone 上的 Opera Mini 5 (2009)
  • Pike v7.8 release 517: 任何 iPhone 上的 Opera Mini 7 (2012)

黑莓

  • BlackBerry(2003)

自由BSD

  • FreeBSD
  • FreeBSD i386: x86 (IA-32) 处理器
  • FreeBSD amd64: AMD x86-64 处理器

Linux

严重不可靠,因为有很多平台都建立在此之上。例如,ChromeOS 或 Linux x86-64 上的 Chrome 都返回Linux i686,因为这就是它们被编译的目的。

注意 Linux ARM 列出了体系结构标志,例如armv5tej表示具有 Thumb 支持 ('T')、DSP 指令集 ('E') 和 Jazelle 支持 ('J') 的 v5 ARM 体系结构。

  • 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: 索尼 Xperia V
  • Linux ppc64
  • Linux x86_64
  • Linux x86_64 X11:基于X11窗口系统

微软

即使在 64 位 Windows 8 上,它们也都坚持使用Win32.

  • OS/2(1994†)
  • Pocket PC
  • Windows
  • Win16: Windows 3.1x (1992†)
  • Win32: Windows 95 及以上
  • WinCE

Mozilla(火狐操作系统)

在 Firefox OS 的 Web 浏览器中返回一个空字符串。请参阅此错误报告

凯iOS

KaiOS 上的网络浏览器(基于 Firefox)也返回空字符串(与 Firefox OS 相同)。请参阅此错误报告

任天堂

  • New Nintendo 3DS(2014)
  • Nintendo DSi(2008)
  • Nintendo 3DS(2011)
  • Nintendo Wii(2006)
  • Nintendo WiiU(2012)

OpenBSD

  • OpenBSD amd64

塞班/S40

  • Nokia_Series_40(1999†)
  • S60(2002†)
  • Symbian: Symbian 上的歌剧
  • Symbian OS

棕榈

  • PalmOS(1996)
  • webOS(2009)

索拉里斯

  • SunOS
  • SunOS i86pc
  • SunOS sun4u: SPARC 处理器

索尼

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

各种各样的

  • HP-UX: 惠普 UniX
  • masking-agent: 使用 Masking Agent for Firefox 时的值更改
  • WebTV OS
  • X11: X11 视窗系统

有不在此列表中的设备?请留下评论,列出您设备的属性及其navigator.platform值(随意使用此 JSFiddle查找值)。

希望这可以帮助。

于 2013-11-09T22:37:12.060 回答
24

我可以将我测试过的特定设备的明确值添加到此列表中。

字符串在哪里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 手机设备中,诺基亚 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
于 2014-05-19T11:15:54.663 回答
9

I could not post a comment, so I leave these ones I think are not mentioned above:

+-----+--------------+--------------------------------------+
| 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" is a browser privacy extension that changes the platform by default to that.

The weird long one is a Sony Z10

于 2015-03-15T02:54:44.447 回答