Javascript 为什么(navigator.devicememory)对于内存超过6gb的设备不准确?
我想获得设备内存(80%的时间是android手机),这是我写的代码Javascript 为什么(navigator.devicememory)对于内存超过6gb的设备不准确?,javascript,html,Javascript,Html,我想获得设备内存(80%的时间是android手机),这是我写的代码 <html> <body> <p class="ram-description">Your device memory is <span id="result">unknown</span> GB.</p> <script> document.getElementById('result').innerHTML = nav
<html>
<body>
<p class="ram-description">Your device memory is <span id="result">unknown</span> GB.</p>
<script>
document.getElementById('result').innerHTML = navigator.deviceMemory || 'unknown'
</script>
</body>
</html>
您的设备内存未知
document.getElementById('result').innerHTML=navigator.deviceMemory | | |“未知”
但我认为(navigator.deviceMemory)不适用于手机或其他内存超过4GB的设备
例如,我的手机有6GB内存,显示4GB
我的笔记本电脑有16GB,显示8GB
有人能帮我吗
<html>
<body>
<p class="ram-description"><b id="result">Your device memory is <b id="result">unknown</b> GiB.</p>
<script>
document.getElementById('result').innerHTML = navigator.deviceMemory || 'unknown'
</script>
</body>
</html>
您的设备内存未知
document.getElementById('result').innerHTML=navigator.deviceMemory | | |“未知”
下限和上限用于保护非常低端或高端设备所有者的隐私
引自这也让我感到困惑,因此我进一步挖掘了我能找到的资源,以找到这个API实际工作原理的好答案 事实是,浏览器脚本无法检索设备的精确内存量。这是故意不可用的,作为防止设备指纹的保护 相反,
Navigator.deviceMemory
为我们提供了一些有用的准确信息,但仍然是匿名的:它根据设备可能拥有的最小内存量将设备放入队列中
以下是计算应如何根据:
1011101110000
1
,并将所有较小的位设置为0
。这与四舍五入到最接近的2次方相同。对于电话示例,base 21011101110000
变为1000000000000
=2 CharStyle²=4096 MiBNavigator.deviceMemory
返回。因此,您可以在Android手机上获得4
0.25、0.5、1、2、4、8
。这是我们目前能做的最好的了。有0.9995 GB内存的人会报告有0.5 GB内存,有128 GB工作站的人会报告只有8 GB内存
如果你打算使用这个API来改变你的站点/应用程序的性能(而不是像OP的例子那样只向用户报告价值),那么要谨慎行事。一台机器可能会报告有8GB的RAM,但如果该设备已经使用了80%的RAM(而你无法知道),那么最好将其视为只有1GB。它还只考虑RAM,而不考虑处理器速度、GPU速度/内存或其他性能变量
最后,目前的浏览器支持仅限于Chromium,Safari团队的一些人说,这是因为它的实用性和隐私影响有限。注意清空器。另请参阅。您能帮助我如何获取设备ram吗?