【问题标题】:Is it possible to detect hardware acceleration by browser in JavaScript?是否可以在 JavaScript 中通过浏览器检测硬件加速?
【发布时间】:2011-07-21 04:51:55
【问题描述】:

我注意到,由于字体渲染的变化,使用硬件加速的浏览器的字体大小并不相同 - 使字符看起来更小。在具有水平导航的网站上,这实际上已成为一个问题。

是否可以使用 JavaScript 或 JS 库来检测浏览器中是否启用(或禁用)硬件加速?

Modernizr 似乎没有提供这种选择。

【问题讨论】:

  • IMO 你问错问题了。您永远不必关心硬件加速。
  • 相关问题:stackoverflow.com/questions/4972074/…。如果只看标题就会重复,但他真正想知道的问题是:“速度够快吗?”而这个问题实际上是“它是否按照我的意愿呈现?”

标签: javascript html browser hardware-acceleration modernizr


【解决方案1】:
<script type="text/javascript">
<!--
window.onload=function(){
        if(window.screen.availHeight>700 && window.screen.availWidth>1000)
        {
        document.body.style.fontSize="15px";
        }
.................
//another conditions
}
//-->
</script>

您无法获得处理器速度或内存大小 但是你可以制作函数来了解硬件强度

<script type="text/javascript">  

 var number=10;  
 var i;  
 var start = (new Date).getTime();  
 //code here  
     for(i=0;i<10000;i++)  
     {  
      number=number*10;  
     }  
 var diff = (new Date).getTime() - start;  
 alert(diff);  

 start = (new Date).getTime();  
 //code here  
     while(i<10000)  
     {  
      number=number*10;  
      i++;  
     }  

diff = (new Date).getTime() - start;  
alert(diff);  

 </script> 

【讨论】:

  • 不会有任何体面的编译器优化你的整个循环吗?第一个函数看起来会在页面完成加载后导致下一次调整大小。糟糕的用户体验。
  • busy-loop 的计算速度(我相信您的访问者会喜欢这种体验)与硬件加速字体渲染(实际上只是一个特定的 instance i> 原始发帖人试图解决的问题)。
  • 即使没有优化循环,我也希望时间差为零。在 Windows 上,时间函数不是很准确。根据正在运行的其他程序,它可能仅每 16 毫秒更新一次。而且您的循环肯定会花费更少的时间。
【解决方案2】:

字体渲染因浏览器、操作系统和用户设置而异。所以你的网站应该优雅地处理这些差异,而不是依赖像素精确的字体渲染。硬件加速只是造成这种差异的另一个原因。

由于您实际上并不关心它是否是硬件加速的,但在字体渲染方面的差异如何测量某些渲染文本的大小,并基于此调整您的页面?

【讨论】:

  • 确实,我想我并不完全确定将资源用于解决问题的地方——我只知道问题确实需要解决。为输入干杯。
【解决方案3】:

由于您只对跨浏览器和平台的字体大小差异感兴趣,因此可能值得研究字体大小规范化技术。

我个人熟悉的唯一一个是YUI Fonts CSS。我在我所有的项目中都使用它,它使用了HTML5Boilerplate 项目。

还有 css 排版框架,例如 BaselineTypogridphyBlueprint(如果你走这条路,我已经研究过这个推荐它)最后是 atatonic

【讨论】:

    【解决方案4】:

    为什么不使用underscore 的油门或去抖动来减少刷新,而不是解决缓慢渲染的方法?

    【讨论】:

      猜你喜欢
      • 2021-12-02
      • 2012-10-19
      • 1970-01-01
      • 1970-01-01
      • 2018-01-10
      • 1970-01-01
      • 2021-06-05
      • 2022-01-17
      • 2017-06-22
      相关资源
      最近更新 更多