有些移动浏览器和IE8 javascript不仅有点慢,它的速度要慢10倍!有许多东西通过了特征检测测试(js css操作等),但速度很慢,会降低用户体验。
Modernizr会告诉我某个功能存在,但它不会告诉我它是否低于某个性能阈值。
检测IE8适用于IE8用户,但它不适用于运行旧版FF,Safari,移动Opera等的慢速移动设备,平板电脑和计算机。
在不惩罚现代浏览器用户的情况下,有哪些有效的方法可以缓和或禁用慢速功能?
比代码执行块的时间戳更好的方法吗?
答案 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 强>