到今天为止navigator.platform的可能值列表是什么?

时间:2013-11-09 15:55:39

标签: javascript

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

到目前为止列出:

  • HP-UX
  • Linux i686
  • Linux armv7l
  • Mac68K
  • MacPPC
  • MacIntel
  • 的SunOS
  • 的Win16
  • 的Win32
  • WinCE的
  • iPhone
  • 的iPod
  • ipad公司
  • 的Android
  • 黑莓
  • Opera

3 个答案:

答案 0 :(得分:135)

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


定义

据我所知,不存在所有可能的navigator.platform值的公开列表,即使该属性已存在很长时间。更糟糕的是,这些年来该物业的定义发生了变化。它曾经是:

  

navigator.platform表示编译浏览器的机器类型。

这基本上意味着当用户运行编译为16位的浏览器时,属性可以返回Win16,即使用户位于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,再次搞砸了。 Opera Mini实际上返回了一个代码引擎版本号,这是对platform的完全不同的解释,而不是我们迄今为止遇到的任何内容。所以现在我们回到了我们开始的地方,我们开始明白为什么关于这个主题的信息很少。

尽管解释各不相同,而且我没有为您提供完整的答案,但我确实觉得我应该为研究navigator.platform财产的其他人增加2美分。


列表

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

<强>的Android

测试Android设备真的很难。 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)

<强> FreeBSD的

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

<强>的Linux

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

注意Linux ARM列出架构标志,例如armv5tej表示支持Thumb(&#39; T&#39;)的v5 ARM架构,DSP指令集(&#39; E&#39;)和Jazelle支持(&#39; J&# 39。)

  • Linux
  • Linux aarch64
  • Linux armv5tejl
  • Linux armv6l
  • Linux armv7l
  • Linux i686
  • Linux i686 on x86_64
  • Linux i686 X11:基于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:基于X11 Window System

<强>微软

即使在64位Windows 8上,它们仍然坚持Win32

  • OS/2(1994†)
  • Pocket PC
  • Windows
  • Win16:Windows 3.1x(1992†)
  • Win32:Windows 95及更高版本
  • WinCE

<强>的Mozilla

Firefox OS上返回空字符串。请参阅this bug report

<强>任天堂

  • 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:Symbian上的Opera
  • Symbian OS

<强>棕榈

  • PalmOS(1996)
  • webOS(2009)

<强>的Solaris

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

<强>索尼

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

<强>各种

  • HP-UX:Hewlett-Packard UniX
  • masking-agent:使用Masking Agent for Firefox
  • 时,值会更改为此值
  • WebTV OS
  • X11:X11窗口系统

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

希望这有帮助。

答案 1 :(得分:17)

我可以为此列表添加具有我已测试的特定设备的确定值。

如果字符串为Linux armv7l,则以小写L结尾(对于&#34; Linux,大概是?),而不是数字1或小写{{1 }}

对于iOS设备,测试是在Safari中进行的。对于Android设备,测试是在股票浏览器中进行的,如果没有安装库存浏览器,则进行Chrome测试。

在Windows平板电脑设备中,诺基亚Lumia使用IE 11.0.9600.16476运行Windows RT 8.1,MS Surface使用IE 11.0.9600.16438运行Windows 8.1 Pro。

在Windows手机设备中,诺基亚Lumia运行的是Windows Phone 8.1和IE 11。

<强>电话

I

<强>片

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

答案 2 :(得分:6)

我无法发表评论,所以我将这些评论留在上面:

+-----+--------------+--------------------------------------+
| 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