小编典典

截至今天,navigator.platform的可能值列表是什么?

javascript

我知道这种更改经常发生,但是是否有一个列表尽可能详尽地列出了所返回的值navigator.platform

到目前为止的清单:

  • HP-UX
  • Linux i686
  • Linux armv7l
  • Mac68K
  • MacPPC
  • MacIntel
  • SunOS
  • Win16
  • Win32
  • WinCE
  • iPhone
  • iPod
  • iPad
  • Android
  • BlackBerry
  • Opera

阅读 1253

收藏
2020-05-01

共1个答案

小编典典

免责声明: 请注意,此属性是由浏览器发送的,因此可以伪造,就像用户代理字符串一样。切勿完全依赖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版本相同。例如,在Nexus5手机上,Android浏览器和Chrome都会返回Linuxarmv7l。在极少数情况下,Android设备甚至可以返回null(而不是undefined)。

  • Android (2008年)
  • Linux:请参阅上面的注释
  • null

Apple

就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

  • BlackBerry (2003年)

FreeBSD

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

Linux

严重不可靠,因为在此基础上构建了许多平台。例如,ChromeOS或Linux x86-64上的Chrome都将返回,Linux i686因为这正是它们被编译的目的。

注意LinuxARM列出了体系结构标志,例如,armv5tej将表示具有Thumb支持(’T’),DSP指令集(’E’)和Jazelle支持(’J’)的v5ARM体系结构。

  • 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:索尼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)

在FirefoxOS上的网络浏览器中返回一个空字符串。

KaiOS

KaiOS(基于Firefox)上的Web浏览器还返回空字符串(与FirefoxOS相同)。

Nintendo

  • 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

Palm

  • PalmOS (1996)
  • webOS (2009年)

Solaris

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

Sony

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

各种

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

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

希望这可以帮助。

2020-05-01