当前位置: 首页 > 知识库问答 >
问题:

javascript - 前端如何判断用户的电脑是 arm 还是 x86?

聂炜
2023-12-07

前端如何判断用户的 mac 是 arm 还是 x86

https://www.telerik.com/download/fiddler-everywhere

下载 fiddler-everywhere 的时候,它监测到了我的电脑是 arm

怎么实现的?浏览器的 UA 都还是谎称自己是 intel

图片.png

是通过 js 调用浏览器 API 获得的结果吗?对应的 API 是哪个呢?

共有3个答案

龙越彬
2023-12-07

看了下我的使用 Apple 芯片的 Mac 上原生的 Safari 的 UA ,它用的就是 Intel 。所以不能凭这个信息认定这个 UA 是在伪装 Intel 芯片。

公羊新
2023-12-07
navigator.userAgentData.getHighEntropyValues(["architecture", "bitness"]) .then(ua => {   if (navigator.userAgentData.platform === "Windows") {     if (ua.architecture === 'x86') {       if (ua.bitness === '64') {         console.log("x86_64");       }       else if (ua.bitness === '32') {         console.log("x86");       }     }     else if (ua.architecture === 'arm') {       if (ua.bitness === '64') {         console.log("ARM64");       }       else if (ua.bitness === '32') {         console.log("ARM32");       }     }   }   else {     console.log("Not running on Windows");   } });

image.png

微软官方文档:

https://learn.microsoft.com/zh-cn/microsoft-edge/web-platform...

截图中的用浏览器api就可以获取

 navigator.userAgent;

image.png

阎星华
2023-12-07

该问题可以通过 JavaScript 调用浏览器 API 来实现。在浏览器中,存在一个名为 navigator.userAgent 的属性,它包含了浏览器用于标识自身的一系列标识符信息,其中就包括了 CPU 的类型。

在苹果电脑上,如果 CPU 是 ARM 架构的,那么 navigator.userAgent 属性中就会包含 "CPU OS X" 字样,并且在该字样后面会跟着 CPU 的类型,例如 "CPU OS X ARM" 或者 "CPU OS X ARM64"。因此,通过判断 navigator.userAgent 中是否包含这些标识符,就可以判断出用户的电脑是否为 ARM 架构的。

下面是一段示例代码,可以用来检测用户电脑的 CPU 类型:

const userAgent = navigator.userAgent;const isARM = /CPU OS X ARM/.test(userAgent) || /CPU OS X ARM64/.test(userAgent);console.log(isARM ? 'This is an ARM computer.' : 'This is not an ARM computer.');

这段代码首先获取了 navigator.userAgent 属性的值,然后使用正则表达式检测该字符串中是否包含 "CPU OS X ARM" 或者 "CPU OS X ARM64" 字样。如果包含,那么就认为用户的电脑是 ARM 架构的。最后,将结果输出到控制台中。

需要注意的是,由于 navigator.userAgent 属性可以被用户或某些软件篡改,因此这种检测方法并不是完全可靠的。此外,由于这种方法是基于浏览器的特性来实现的,因此它也只能在浏览器环境下运行。在非浏览器环境下,例如在微信小程序、桌面应用等环境下,该方法就无法使用了。

 类似资料:
  • 系统的日志需要登录和登出闭环,即有一个用户登录日志,就需要有一条登出日志。 如果用户通过登出按钮手动登出,触发登出接口是没问题的。 但是大多数用户,包括我自己都是直接点击x,关闭系统。 于是我监听了beforeunload事件,想在这里发登出请求。 现在遇到两个问题,一是:刷新也会触发这个事件。 二是:触发这个事件后的弹窗 重新加载是刷新弹出的,离开时关闭弹出的,我只想在点击离开的时候触发登出,重

  • 本文向大家介绍如何判断是函数还是方法?相关面试题,主要包含被问及如何判断是函数还是方法?时的应答技巧和注意事项,需要的朋友参考一下 看他的调用者是谁,如果是类,就需要传入一个参数self的值,这时他就是一个函数, 如果调用者是对象,就不需要给self传入参数值,这时他就是一个方法 print(isinstance(obj.func, FunctionType)) # False print(isi

  • 超级管理员、管理员和用户。超级管理员可以为用户和管理员创建用户名、密码和用户类型(单选按钮)。我想做的是,当我输入登录用户名和密码时,系统将自动知道该用户是管理员或用户。如何获取已插入sql db的单选按钮的数据 如何获取已经存储在sql db中的用户类型(单选按钮)的数据。然后将其放入if条件。如果我的问题是正确的,但我想要的是区分用户和管理员。谢谢!输出 MainActivity.java 输

  • 本文向大家介绍javascript判断网页是关闭还是刷新,包括了javascript判断网页是关闭还是刷新的使用技巧和注意事项,需要的朋友参考一下 原理就是通过离开页面行为时间onunload触发时间去检测此时的浏览器的窗口大小,根据大小由此判断用户是刷新,跳转或是关闭行为程序  代码如下  用浏览器右上角的关闭按钮时好用,但在选项卡上关闭和在任务栏上关闭,这个方法就不作用了 js标签只有onlo

  • 需求背景 A B C 三个页面 A => C ,通过 router.push 进入。 B => C ,通过 router.repace 进入。 需求: 在 C 页面需要判断是 replace 还是 push 来进行特殊的操作。 问题: vue-router 是否有这样的方式呢?

  • 请问电脑如何判断HDMI接的屏幕是打开的? 目前在车间有放电视墙展示生产状况 但有时会有停电或是人为不小心关闭屏幕情况 导致每天都要去现场巡视 请问有办法用程序或是其它方式,能知道电脑连接的HDMI屏幕是否打开状态吗?