已废弃的JavaScript操作系统检测技术

13
我想知道为什么JavaScript操作系统检测技术,如navigator.userAgent、navigator.appName、navigator.appVersion和navigator.platform正在被从Web标准中删除。

https://developer.mozilla.org/en-US/docs/Web/API/Navigator

如果您访问每个导航器属性,您会看到
已弃用
此功能已从Web标准中删除。尽管某些浏览器可能仍支持它,但正在被放弃。请勿在旧项目或新项目中使用它。使用它的页面或Web应用程序可能随时会出现问题。
所以我想知道:
1.他们为什么要删除这个 2.他们是否会引入一种新的操作系统检测方式 3.即使它们已被弃用,我能否使用这些技术。
可能有很多情况需要知道操作系统版本。

2
虽然这是一个好问题,但这可能不是正确的提问地点。除了没有要解决的问题外,它还带有个人观点,因为除了起草Web标准的人之外,没有其他单个人可以告诉您他们的推理。它也处于掩饰怒气的边缘。 - Claies
2
@JKirchartz:我曾经看到的唯一真正(而且不过时)使用平台检测的用例是提供可下载软件:通过检测,您可以将默认选择平台(比如Linux),让用户在查看您的页面时能够下载(同时仍然允许用户导航到其他平台,比如Windows)。 - T.J. Crowder
1
@T.J.Crowder:而且为此,您可以轻松地在服务器端完成,我猜测仍将具有userAgent。 - Whothehellisthat
1
我认为我们在这方面都是一致的。 - Whothehellisthat
2
我投票关闭此问题,因为其前提是navigatorOS检测方面已被弃用,但规范和MDN都没有表明主要与操作系统相关的属性navigator.platform实际上正在被弃用。 - T.J. Crowder
显示剩余10条评论
3个回答

2

4
为了更新到2023年,根据MDN的说法,OP提到的所有键(除了userAgent)现在实际上都已经被弃用了:https://developer.mozilla.org/en-US/docs/Web/API/Navigator/platform - Allie Howe

0

您可以使用:

navigator.userAgentData.platform

3
大多数浏览器不支持(例如Firefox)。请参见https://developer.mozilla.org/en-US/docs/Web/API/Navigator/userAgentData#browser_compatibility。 - Zacharya Haitin

-5

我认为普遍的想法是它变得不必要了。理论上,任何浏览器与JavaScript相关的功能都不应该有任何差异。

通常你需要浏览器嗅探的是功能,而且有很多方法可以找到大部分这些信息,而不必从 userAgent 这个噩梦中推断出什么。

所以它可能会被弃用,也可能不会。但最好不要嗅探浏览器。这种东西可能会变得非常复杂。即使它真的被弃用了,它也可能会继续存在几十年,以便仍然依赖它的一半网站不会崩溃。


我想在苹果平台上显示一个图标,在安卓平台上显示另一个图标。我认为这是一个合理的使用情况。 - Ramon Balthazar
不同意 - 另一个用例是用于键盘快捷键:在KeyboardEvent上,metaKey标志是Mac的Command键,但是在Windows上是WinKey。通常您希望在Windows和Mac上都使用Ctrl + S和Cmd + S来保存。 - Allie Howe

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接