我知道这种情况经常发生变化,但是有一个列表尽可能详尽无遗地返回了可能的值navigator.platform
吗?
到目前为止列表:
Rob*_*ert 145
免责声明:请注意,此属性由浏览器发送,因此可以伪造,就像用户代理字符串一样.永远不要依赖navigator
对象完全准确.
据我所知,没有一个公共列表中包含所有可能的navigator.platform
值,即使该属性已存在很长时间.更糟糕的是,这些年来该物业的定义发生了变化.它曾经是:
navigator.platform
表示编译浏览器的机器类型.
这基本上意味着Win16
当用户运行编译为16位的浏览器时,属性可以返回,即使用户位于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支持('T')的v5 ARM体系结构,DSP指令集('E')和Jazelle支持('J').
Linux
Linux aarch64
Linux armv5tejl
Linux armv6l
Linux armv7l
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上返回空字符串.请参阅此错误报告.
任天堂
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上的OperaSymbian 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 UniXmasking-agent
:使用Masking Agent for Firefox时,值会更改为此值WebTV OS
X11
:X11窗口系统有一个不在此列表中的设备吗?请留下评论,列出您设备的属性及其navigator.platform
值(随意使用此JSFiddle查找值).
希望这可以帮助.
小智 20
我可以为我测试的特定设备添加具有确定值的列表.
在字符串的位置Linux armv7l
,它以小写结尾L
(对于"Linux,大概是?),而不是数字1
或小写I
.
对于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.
手机
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
Run Code Online (Sandbox Code Playgroud)
片
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
Run Code Online (Sandbox Code Playgroud)
小智 8
我无法发表评论,所以我留下这些我认为上面没有提到的:
+-----+--------------+--------------------------------------+
| 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 |
+-----+--------------+--------------------------------------+
Run Code Online (Sandbox Code Playgroud)
"masking-agent"是一种浏览器隐私扩展,默认情况下会将平台更改为该扩展.
奇怪的长一个是索尼Z10