我知道这种更改经常发生,但是是否有一个列表尽可能详尽地列出了所返回的值navigator.platform
?
到目前为止的清单:
- HP-UX
- Linux i686
- Linux armv7l
- Mac68K
- MacPPC
- MacIntel
- 太阳操作系统
- Win16的
- Win32的
- WinCE的
- 苹果手机
- iPod
- 的iPad
- 安卓系统
- 黑莓
- 歌剧
我知道这种更改经常发生,但是是否有一个列表尽可能详尽地列出了所返回的值navigator.platform
?
到目前为止的清单:
Answers:
免责声明:请注意,此属性是由浏览器发送的,因此可以伪造,就像用户代理字符串一样。切勿完全依赖navigator
物体。
据我所知navigator.platform
,即使该属性存在很多时间,也没有一个包含所有可能值的公共列表。更糟的是,这些年来,酒店的定义发生了变化。它曾经是:
navigator.platform
指示为其编译浏览器的机器类型。
这基本上意味着Win16
,即使用户使用的是32位或64位Windows计算机,当用户运行针对16位编译的浏览器时,该属性也可以返回。
当然W3Schools列出了旧的定义(我什至不会链接到它们)。W3和MDN同意了不同的定义:
navigator.platform
表示浏览器正在执行的平台。
尽管如此,这个定义还是有点模糊。十年前,“平台”可以是CPU体系结构或操作系统。近年来,手持设备和媒体设备也可以成为平台。
与网络上的所有内容一样,我们的命运掌握在强大的浏览器供应商手中。在这种情况下,所有主要的浏览器(IE,Safari,Firefox和Chrome)都同意我的64位Windows计算机是Win32
平台。这意味着就Windows而言,它们一直遵循旧的定义,因为到目前为止,它们都没有针对64位进行编译。不过,要乐观地看:至少他们所有人都同意一次。
在手持设备和媒体设备方面,我们似乎有点运气。正如您在问题中已经提到的那样,即使它们都运行相同的操作系统,iPhone,iPod和iPad各自具有独特的价值。任天堂和索尼的所有设备也都返回了唯一的值。所以直到现在才navigator.platform
开始看起来很有趣。
但是随后出现了适用于iPhone的Opera Mini,又把事情搞砸了。Opera Mini实际上会返回一个代码引擎版本号,这与platform
到目前为止我们所遇到的任何事情都完全不同。现在,我们回到了开始的地方,并且开始了解为什么关于此主题的信息很少。
尽管解释各不相同,但我没有为您提供完整的答案,但我还是觉得应该为研究该navigator.platform
物业的其他任何人加2美分。
以下是我所知道的(绝对不确定)值列表,可以使用多个来源进行验证。由于定义不明确,我不太确定订购这些产品的最佳方法是什么。目前,我根据操作系统或设备品牌将它们分为几类,并列出了其他信息和适用的发布日期。
安卓系统
真的很难测试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'),DSP指令集('E')和Jazelle支持('J')的v5 ARM体系结构。
Linux
Linux aarch64
Linux armv5tejl
Linux armv6l
Linux armv7l
Linux i686
Linux i686 on x86_64
Linux i686 X11
:基于X11 Window SystemLinux MSM8960_v3.2.1.1_N_R069_Rev:18
:索尼Xperia VLinux 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作业系统)
在Firefox OS上的网络浏览器中返回一个空字符串。请参阅此错误报告。
操作系统
KaiOS(基于Firefox)上的Web浏览器还返回空字符串(与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上的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
:惠普UniXmasking-agent
:使用适用于Firefox的Masking Agent时,值更改为此WebTV OS
X11
:X11窗口系统是否有不在此列表中的设备?请留下评论,列出您设备的属性及其navigator.platform
值(可以使用此JSFiddle查找值)。
希望这可以帮助。
navigator.cpuClass
和来检测64位系统navigator.appVersion
,但是到目前为止,这两种方法似乎都不可靠。@hexalys:谢谢你,我已经将那些字符串添加到列表中。
我可以使用已测试的特定设备的确定值添加到此列表中。
字符串在哪里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 Phone设备中,诺基亚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
l
,little-endian 的代表(将LSB存储在最小的地址中,如果可以的话)。尽管有太多的变体无法跟踪。
我无法发表评论,因此我在上面未提及这些评论:
+-----+--------------+--------------------------------------+
| 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”是浏览器隐私扩展,默认情况下会将其更改为平台。
奇怪的是索尼Z10
Sony Z10
现在拥有最高navigator.platform
价值的王冠。
browscap.ini
吗?该项目已于今年初重新启动。