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

前端 - 浏览器 navigator.deviceMemory 返回的设备内存为什么不准?

范豪
2024-08-08

使用 navigator.deviceMemory 可以大致获取到设备的内存,目前电脑是插了两条 8G 的内存,也就是总共是 16G 内存,而 navigator.deviceMemory 读取的是 8,刚好比实际的少一半,估计是只读取了其中一条内存条的内存大小。有什么方法可以读取到全部的内存大小?

共有2个答案

裴学
2024-08-08

不是只读取了一条内存条,而是返回值最大就是 8

image.png

Navigator:deviceMemory 属性

刘德义
2024-08-08

navigator.deviceMemory 属性在 Web API 中用于估计设备的总 RAM(随机访问存储器)大小,但它提供的是一个近似值,并且这个值可能会因为多种原因而不准确。主要的原因包括:

  1. 隐私和安全考虑:浏览器和操作系统可能会限制或修改这个值,以保护用户的隐私。例如,为了防止网站根据用户的设备内存大小来推断用户的经济能力或进行其他形式的用户画像,浏览器可能会返回一个模糊或标准化的值。
  2. 实现差异:不同的浏览器和不同的操作系统平台(如 Windows、macOS、Linux、iOS、Android 等)可能会以不同的方式实现这个 API,导致返回的值有所不同。
  3. 技术限制:浏览器可能无法直接访问或准确获取设备的全部内存信息,特别是当这些信息受到操作系统保护时。
  4. 标准化和兼容性navigator.deviceMemory 是一个相对较新的 API,其标准化和跨浏览器兼容性可能还在不断完善中。

解决方法

由于 navigator.deviceMemory 的这些限制,如果你需要获取更准确的设备内存信息,你可能需要考虑以下替代方案:

  • 服务器端检测:虽然这不会直接在客户端浏览器中实现,但你可以通过服务器端技术(如用户代理字符串分析、特定于平台的 API 调用等)来尝试推断用户的设备规格。然而,这些方法同样可能受到隐私和安全限制的影响,并且准确性也有限。
  • 用户输入:在某些情况下,你可以要求用户手动输入他们的设备规格,但这显然不是一个自动化的解决方案,并且依赖于用户的准确性和诚实性。
  • 接受不准确性:对于大多数 Web 应用来说,navigator.deviceMemory 提供的信息可能已经足够用于性能优化或功能调整。如果不需要极端精确的内存信息,那么接受这个 API 的不准确性可能是一个合理的选择。

总之,navigator.deviceMemory 的不准确性主要是由于隐私保护、技术限制和标准化问题所导致的。在需要更精确的设备内存信息时,你可能需要寻找其他方法或接受这种不准确性。

 类似资料:
  • 问题内容: 我正在使用$ .ajax发出ajax请求。响应具有标题集(我已经在Chrome开发工具中对此进行了验证)。但是,浏览器在收到响应后 不会 设置cookie!当我导航到域中的另一个页面时,不会发送cookie。(注意:我没有执行任何跨域ajax请求;该请求与文档位于同一域中。) 我想念什么? 编辑 :这是我的ajax请求的代码: 这是请求,如Chrome开发者工具所示: 响应: 问题答案

  • Bootstrap支持多种多样的现代浏览器以及设备,还支持一些较早的浏览器。具体支持哪一些,请看下面内容。下面还列出了一些已知的漏洞的详细信息。 支持的浏览器 Bootstrap 支持所有的主流浏览器和平台的最新的、稳定的版本。 在 Windows 中, **我们支持 Internet Explorer 9-11 **。下面提供了更多详细的支持信息。 移动设备 总的来说,Bootstrap支持所有

  • 现在的QQ浏览器都是IE11的内核,怎么才能更新的之前的ie8内核, 我想把我的QQ浏览器内核还原到IE8的内核,有大佬们知道吗? 请问QQ浏览器在什么情况下会切换内核啊。开始是Chromium94.0.4606.71 后面切换到IE8 了

  • 响应头如下,为什么浏览器命中强缓存?

  • gRPC基于HTTP/2,浏览器广泛支持HTTP/2(假设)。因此,我觉得从浏览器使用gRPC应该没有问题。 然而,很明显有一个问题。协议grpc web是不同的,因为“由于浏览器限制”而存在。还有许多博客文章描述了为让gRPC从浏览器工作而部署的复杂技术堆栈。 我忽略了实际的问题——为什么gRPC不只是在浏览器上工作?

  • 本文向大家介绍浏览器的内核分别是什么?相关面试题,主要包含被问及浏览器的内核分别是什么?时的应答技巧和注意事项,需要的朋友参考一下 IE: trident内核 Firefox:gecko内核 Safari:webkit内核 Opera:以前是presto内核,Opera现已改用Google Chrome的Blink内核 Chrome:Blink(基于webkit,Google与Opera Soft

  • 但是,当我使用不带参数的url(时,它工作正常。

  • 我正在研究SAML和SSO,看起来使用SAML的应用程序需要是一个web应用程序,并且依赖于浏览器。 有人能告诉我为什么吗? 我对SAML的有限知识告诉我,SAML依赖于会话和cookie,这在桌面应用程序或移动应用程序中是不可用的。这是唯一的原因吗?你能告诉我更多的细节吗?