功能检测通常优先于浏览器嗅探。在某些浏览器“支持”我正在使用的功能但是javascript运行时太慢的情况下,我该怎么办?
我正在使用d3库进行一些复杂的可视化。 chrome / firefox中的可视化非常流畅,在IE9中可以接受,并且在IE8中工作缓慢。我想向IE8用户显示一个横幅,告诉他们升级,并向IE9用户发布通知横幅,表示它在chrome或FF方面会更快。通过用户代理嗅探这样做是不是很糟糕?
答案 0 :(得分:2)
为什么不测量浏览器计算复杂内容的时间,类似于您想要做的事情,并为其设置阈值时间?
function detectBrowserSpeed(){
var i,
slowThreshold = 100; // milliseconds
startMillis = + new Date(); //The + is to 'force' casting to an integer representing EPOCH milliseconds. If + is ommited, then I get an instance of Date.
//Do something complex here:
for (i=0;i<100000;i+=0.1){
}
var elapsed = (+ new Date()) - startMillis;
if(elapsed > slowThreshold){
return 'slow';
}else{
return 'fast';
}
}