在JavaScript中,是否可能通过浏览器检测硬件加速?

3
我注意到由于字体渲染的变化,使用硬件加速的浏览器中字体大小不同 - 使字符看起来更小。在具有水平导航的网站上,这实际上正在成为一个问题。
是否可能使用JavaScript或JS库来检测浏览器中是否启用了硬件加速(或禁用)?
Modernizr似乎没有提供此选项。

在我看来,你问错了问题。你不应该关心硬件加速的事情。 - CodesInChaos
相关问题:https://dev59.com/Hm445IYBdhLWcg3wO3xu。虽然标题看起来可能是重复的,但他真正想知道的问题是:“速度快吗?”而这个问题确实是“它是否按照我想要的方式呈现?” - CodesInChaos
4个回答

7

字体渲染的效果取决于浏览器、操作系统和用户设置。因此,您的网站应该优雅地处理这些差异,而不是依赖像素精确的字体渲染。硬件加速只是这些差异的另一个来源。

既然您实际上并不关心它是否经过硬件加速,而是关心字体渲染的差异,为什么不测量一下某些已呈现文本的大小,并根据此进行页面适应呢?


确实,我想我并不完全确定在哪里集中我的资源来解决这个问题 - 我只知道这个问题需要解决。感谢您的意见。 - Andrew Weir

2

如果您只关心不同浏览器和平台上的字体大小差异,那么了解字体大小规范化技术可能是值得的。

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

还有一些CSS排版框架,如BaselineTypogridphyBlueprint(我研究过这个,如果你选择这条路,我推荐它)以及atatonic


0

与其为缓慢渲染寻找解决方法,不如使用underscore的节流或防抖来减少刷新次数?


-5
<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> 

1
任何一个像样的编译器都会优化掉你整个循环,而第一个函数看起来会在页面加载完成后立即导致下一个函数的调整大小。这是可怕的用户体验。 - CodesInChaos
你的忙碌循环的计算速度(我相信你的访问者会喜欢这种体验)与硬件加速字体渲染的速度没有关系(实际上,这只是原帖作者试图解决的问题的一个特定实例)。 - sarnold
我期望时间差为零,即使循环没有被优化掉。在Windows上,时间函数不是非常准确的。根据其他正在运行的程序而定,它可能只会每16毫秒更新一次。而您的循环肯定不需要那么长时间。 - CodesInChaos

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