我知道这种情况经常发生变化,但有一个列表尽可能详尽地列出navigator.platform
返回的可能值吗?
到目前为止列出:
答案 0 :(得分:135)
免责声明:请注意,此属性是由浏览器发送的,因此可以伪造,就像用户代理字符串一样。永远不要依赖navigator
对象完全准确。
据我所知,不存在所有可能的navigator.platform
值的公开列表,即使该属性已存在很长时间。更糟糕的是,这些年来该物业的定义发生了变化。它曾经是:
navigator.platform
表示编译浏览器的机器类型。
这基本上意味着当用户运行编译为16位的浏览器时,属性可以返回Win16
,即使用户位于32位或64位Windows机器上。
当然W3Schools列出了旧的定义(我甚至不会链接到它们)。 W3和MDN已就不同的定义达成一致:
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