我怎样才能"性能检测"浏览器

时间:2013-09-30 21:54:33

标签: javascript performance browser browser-detection browser-feature-detection

有些移动浏览器和IE8 javascript不仅有点慢,它的速度要慢10倍!有许多东西通过了特征检测测试(js css操作等),但速度很慢,会降低用户体验。

Modernizr会告诉我某个功能存在,但它不会告诉我它是否低于某个性能阈值。

检测IE8适用于IE8用户,但它不适用于运行旧版FF,Safari,移动Opera等的慢速移动设备,平板电脑和计算机。

在不惩罚现代浏览器用户的情况下,有哪些有效的方法可以缓和或禁用慢速功能?

比代码执行块的时间戳更好的方法吗?

2 个答案:

答案 0 :(得分:1)

即使您不喜欢js测试,Modenizr.js也是一个自信的库,用于执行您可能需要的所有css / js测试。

否则,如果不尝试自己进行轮询(即在加载过程中进行时间测量),则无法测试实际计算机的能力。

IE的另一种选择。是一个很好的'HTML条件。

<!--[if lt IE 8]>
    HTML CODE OR SCRIPTS
<![endif]-->

您可以让PHP分析浏览器提供的用户代理字符串以获取浏览器版本,甚至操作系统类型并以此方式重新路由请求,或者在文档中放入条件语句。这里有一个可用的轻量级库...

https://github.com/serbanghita/Mobile-Detect

<?php
require_once '../Mobile_Detect.php';
$detect = new Mobile_Detect;
$deviceType = ($detect->isMobile() ? ($detect->isTablet() ? 'tablet' : 'phone') : 'computer');
?>
<html>
   <body>
      <script src="js/main.<?= $deviceType ?>.min.js" type="text/javascript></script>
      <script>
          <? if($deviceType==='phone') { ?>
          alert('You're on a phone!');
          <? } ?>
   </body>
</html>

这段代码的作用是检测(使用用户代理字符串)它是什么类型的设备,然后在文档中打印出javascript文件所在的设备类型。因此,平板电脑用户的浏览器将加载到js文件js/main.tablet.min.js中。我还包括一个小的条件示例。

答案 1 :(得分:-1)

我建议这种方法:

首先:在您的HTML主管部分中,放置此代码

<!doctype html>
<!--[if lt IE 7 ]> <html class="6"> <![endif]-->
<!--[if IE 7 ]>    <html class="7"> <![endif]-->
<!--[if IE 8 ]>    <html class="8"> <![endif]-->
<!--[if IE 9 ]>    <html class="9"> <![endif]-->
<!--[if (gt IE 9)|!(IE)]><!--> <html class="10+"> <!--<![endif]-->
<head>

然后,您可以轻松地使用一些JS函数检测当前版本的IE是什么,并禁用某些功能。

var modern_browser = true; 
var internet_explorer_version = null; 
var detectBrowser = function() {  
    var html = document.getElementsByTagName('html')[0]; 
    if (html.className === 'notie') 
    { 
        return ; 
    } 
    internet_explorer_version = html.className; 
    modern_browser = false;
    return; 
}();

if (modern_browser === false)
{ 
    alert ("You use Internet Explorer : version " + internet_explorer_version);
}
else 
{ 
    alert ("You use a modern Browser ;-)");
}

<强> JSBin to test