Html5 学习之 Html5功能判断插件 Modernizr
---恢复内容开始---
Modernizr 浏览器对HTML5和CSS3开发的功能检测类库
由于当前用户使用的浏览器版本较多,对H5和CSS3的支持也各不相同。前端的开发者,在使用一些新的特性的时候,就比较的麻烦。需要去兼容各种浏览器,判断这些浏览器是否支持这些新的特性。
Modernizr可以帮助前端的开发者很好的解决这一问题。
Modernizr是什么?
用官网的话说,Modernizr是一个JavaScript库,在用户的浏览器中监测对HTML5和CSS3功能支持。这也是我们的目的所在。
下面我们来通过一个简单的例子来说明一下不同浏览器对HTML5和CSS3的支持。
比如对于的HTML5的Canvas标签的支持。就目前的浏览器来说,Internet Explorer 9+, Firefox, Opera, Chrome 以及 Safari 支持 <canvas> 标签。但是ie9以下的版本是不支持Canvas的。
如果你的浏览器支持Canvas以下这段代码的效果就是下面的红色矩形图
<!DOCTYPE html>
<html>
<head>
<title>Modernizr</title>
<meta charset="utf-8" />
</head>
<body>
<canvas style="background-color:red;">您的浏览器不支持Canvas</canvas>
</body>
</html>

如果不支持,就会显示一段话:您的浏览器不支持Canvas;
Madernizr 是怎么检测浏览器对HTML5和CSS3的功能支持呢?
只需要简单的引入Madernizr.js 。类库可以从官网下载到。分为压缩版和未压缩版。
下载下来后,我们只要在页面引用既可。
然后打开页面。从运行后的代码页面我们可以看到在html 标签里面多出了一些东西。这写就是Modernizr监测你所使用的浏览器对HTML5和CSS3的支持情况。

仔细看一下会发现, 在touch属性前面多出了一个"no-"的标签。这个就表示所使用的浏览器不支持touch属性。但是当我使用浏览器的开发工具模拟手机浏览器时,这边我模拟的是ipone 4,touch属性前面就没有"no-"的标签。因为现在的触屏手机浏览器都是支持touch属性的。

知道了Modernizr可以监测到浏览器对HTML5和CSS3的支持情况。下面再看一下我们怎么用Modernizr。
我们就以touch属性为例。Modernizr在页面加载初始化后,会创建一个名为MNodernizr的对象。对象的每个属性都是检测浏览器对HTML5和CSS3的属性支持的布尔值。
<!DOCTYPE html>
<html>
<head>
<title>Modernizr</title>
<meta charset="utf-8" />
<script type="text/javascript" src="modernizr.js"></script>
<script type="text/javascript">
if (Modernizr.touch) {
alert("浏览器支持touch");
}else{
alert("浏览器不支持touch");
}
</script>
</head>
<body> </body>
</html>
另外不仅可以通过Javascript进行判断,还可以通过css的类名来进行判断。
<!DOCTYPE html>
<html>
<head>
<title>Modernizr</title>
<meta charset="utf-8" />
<script type="text/javascript" src="modernizr.js"></script>
<style type="text/css">
.yes,.no{display: none}
.touch .yes{display: block;}
.no-touch .no{display: block;} </style>
</head>
<body>
<div class="yes">支持touch属性</div>
<div class="no">不支持touch属性</div>
</body>
</html>
页面很简答,当页面加载Modernizr类库后,如果浏览器支持touch,页面就会显示"支持touch属性",反之则显示“不支持touch属性”。
另外一些浏览器支持HTML5标签,但是标签的属性支持的并不全,只是支持其中的一部分。比如Audio标签。
Audio可以实现ogg,mp3,wav,m4a这4中基本的视频格式,如果一些浏览器只支持其中的一种,或者2种格式怎么样,这时候我们就可以用Modernizr来解决。
<script type="text/javascript">
var audio = new Audio();
audio.src = Modernizr.audio.ogg ? 'xxx.ogg':
Modernizr.audio.mp3 ? 'xxx.mp3':
Modernizr.audio.wav ? 'xxx.wav':
'xxx.m4a';
</script>
首先我们先创建一个Audio的对象,然后给对象附加src属性。通过Modernizr.audio.ogg,mp3,wav,m4a进行判断。然后赋值对于的视频文件。
虽然HTML5的出现,可以让我们使用大量新的标签,但是在目前很多用户还没有升级到最新浏览器的情况下,为了更好的用户体验度,我们前端的开发人员还需要去兼容一些不支持新特性的浏览器。
比方说,某个应用需要实现获取用户的经纬度信息,这里我们可以借助HTML的Golocation功能,单是对于一些老版本的浏览器,还无法实现。我们就需要用地方的控件或者服务去实现。如百度,谷歌提供的一些接口。
为了让开发者不需要关心浏览器层面的兼容问题,这时需要实现一个与HTML5的Golecation应用程序接口相同的代码包,Modernizr在这方面也提供了了对应的加载支持,示例代码如下:
Modernizr.load({
test: Modernizr.geolocation, //判断条件
yep : 'geo.js', //支持geolocation加载的脚本
nopt: 'get-polyfill.js' //不支持geolocation加载的脚本
})
Html5 学习之 Html5功能判断插件 Modernizr的更多相关文章
- HTML5学习总结——HTML5入门与新增标签
一.HTML5概要 1.1.为什么需要HTML5 概念: HTML5 是继 HTML4.01, XHTML 1.0 和 DOM 2 HTML 后的又一个重要版本, 旨在消除富 Internet 程序( ...
- [html5] 学习笔记-html5音频视频
HTML5 最大的新特色之一就是支持音频和视频.在 HTML5 之前,我们必须使用插件如 Silverlight 或 Flash 来实现这些功能.在 HTML5 中,可以直接使用新标签< au ...
- HTML5学习笔记----html5与传统html区别
一. HTML5语法的改变 该知识点所说变化指的是基于HTML4基础上所定义的改变,主要有如下: HTML5的文件扩展符(.html或.htm)与内容类型(text/html)保持不变. HTML5中 ...
- [html5] 学习笔记-html5增强的页面元素
在 HTML5 中,不仅增加了很多表单中的元素,同时也增加和改良了可以应用在整个页面中的元素.重点包含 figure.figcaption.details.summary.mark.progress. ...
- HTML5学习总结——HTML5新增属性与表单元素
一HTML5新增属性 1.1contcxtmcnu contextmenu的作用是指定右键菜单. <!DOCTYPE html> <html> <head> < ...
- Html5学习系列
Html5学习系列 HTML5 规定了一种通过 video 元素来包含视频的标准方法 Ogg = 带有 Theora 视频编码和 Vorbis 音频编码的 Ogg 文件 MPEG4 = 带有 H.26 ...
- HTML5 学习总结(一)——HTML5概要与新增标签
一.HTML5概要 1.1.为什么需要HTML5 HTML4陈旧不能满足日益发展的互联网需要,特别是移动互联网.为了增强浏览器功能Flash被广泛使用,但安全与稳定堪忧,不适合在移动端使用(耗电.触摸 ...
- HTML5 学习笔记(一)——HTML5概要与新增标签
目录 一.HTML5概要 1.1.为什么需要HTML5 1.2.什么是HTML5 1.3.HTML5现状及浏览器支持 1.4.HTML5特性 1.5.HTML5优点与缺点 1.5.1.优点 1.5.2 ...
- HTML5 学习笔记--------》HTML5概要与新增标签!
一.HTML5概要 1.1.为什么需要HTML5 HTML4陈旧不能满足日益发展的互联网需要,特别是移动互联网.为了增强浏览器功能Flash被广泛使用,但安全与稳定堪忧,不适合在移动端使用(耗电. ...
随机推荐
- 设计模式(十):Decorator装饰者模式 -- 结构型模式
1. 概述 若你从事过面向对象开发,实现给一个类或对象增加行为,使用继承机制,这是所有面向对象语言的一个基本特性.如果已经存在的一个类缺少某些方法,或者须要给方法添加更多的功能(魅力),你也许会仅仅继 ...
- iOS 9之Safari广告拦截器(Content Blocker)
金田( github 示例源码) 相对于谷歌对广告拦截的禁止,苹果与之态度截然相反,继Mac版Safari加入广告拦截工具之后,即将到来的iOS9对Safari也引入了内容拦截插件-Content B ...
- SRM 583 DIV1
A 裸最短路. class TravelOnMars { public: int minTimes(vector <int>, int, int); }; vector<int> ...
- 抓取“矢量”的实时交通流量数据
1. 引言 最近老师有一个需求,就是想要抓取实时的矢量交通流量数据来做分析,类似于百度地图,高德地图的"实时路况"那种.平时的网络抓取工作一般是抓取网页上现成的数据,但是交通流量数 ...
- 如何从google play下载app应用,直接下载apk
如何从google play直接下载apk by fly2004jun 2013-10-05 转载请附出处 由于某些原因,大天朝局域网访问google很多服务不能用,其中就包括google ...
- linux比较指令comm、diff、grep -Ff
Comm命令 如果想对两个有序的文件进行比较,可以使用comm命令. 语法:comm [- 123 ] file1 file2 说明:该命令是对两个已经排好序的文件进行比较.其中file1和file2 ...
- OSI七层以及各层上的协议
各层简介: [1]物理层:主要定义物理设备标准,如网线的接口类型.光纤的接口类型.各种传输介质的传输速率等.它的主要作用是传输比特流(就是由1.0转化为电流强弱来进行传输,到达目的地后在转化为1.0, ...
- phpstorm xdebug调试设置样式
由于本人比较喜欢白底的phpstorm开发环境,所以XDEBUG断点调试,F8时默认是没有背景色的,phpstorm中的设置方式如下 files -> settings -> Editor ...
- javascript 单个图片的淡入淡出效果和多张图片的淡入淡出效果
最近刚好在看之前妙趣网站的javascript 初级运动教程,教程里说设置图片的透明度使用了一个变量.这种方法确实不错,但是燕姐喜欢麻烦.就用自己的理解方法写了一遍.其中也是各种坑.现在先把一个图片的 ...
- Android SDK Manager 无法更新SDK
Android SDK Manager 被墙后无法更新SDK 下载sdk时抛出错误:Failed to fetch URL http://dl-ssl.google.com/ 參考例如以下博客: ht ...