Modernizr使用
2013-12-06 17:38
246 查看
稳定版本 | 2.6.2 |
---|---|
编程语言 | JavaScript |
类型 | JavaScript 函式库 |
许可协议 | MIT, BSD |
网站 | www.modernizr.com |
目录
[隐藏]1 概要
2 运作原理
3 执行
4 范例
5 相关条目
6 参考资料
7 外部链接
概要[编辑]
许多 HTML5 与 CSS 3 的功能已经在许多主流的浏览器中实作出来。Modernizr 能够告诉开发者,浏览器是否已经实作他们想要的功能[1][2][3][4]。这让开发者在浏览器上可以充分利用这些新功能,或者尝试制作解决方案来支援那些老旧的浏览器。
运作原理[编辑]
Modernizr不同于传统透过解析浏览器的用户代理的识辨方式,认为这种方式亦不可靠,例如使用者可以手动更改它们浏览器的Useragent、即便是相同的网页渲染引擎,在不同的浏览器中也不一定支援相同的功能。因此Modernizr通常会建立一个特定样式的元素,然后立刻尝试改写这些元素的设定,若在支援的浏览器上,元素会回传有意义的值。但在不支援的浏览器则会回传空值或“undefined”。Modernizr 利用这些结果来判断浏览器是否支援这些功能。
Modernizr能测试超过100种以上的次世代功能。测试的结果会储存在一个名为“Modernizr”的物件里,里面包含了测试结果的布林值。并且根据支援或不支援的功能,新增class名称给HTML元素。
在说明文件内提供了许多测试的小段程式码样本,让开发者可以在他们的网站开发工作流程中使用这些测试。
执行[编辑]
Modernizr 会自动执行。不需要呼叫 modernizr_init() 之类的函式。执行时会建立一个名为 Modernizr 的元件,里面包含了一组测试结果是否支援的布林值。举例来说,如果浏览器支援 Canvas API,Modernizr.canvas 属性的值就会是 true;如果浏览器不支援 Canvas API,Modernizr.canvas 属性的值就会是false:
if (Modernizr.canvas) { // 開始畫圖吧! } else { // 喔喔,瀏覽器不支援原生的畫板 :( }
范例[编辑]
Modernizr JavaScript 范例:<!DOCTYPE html> <html class="no-js"> <head> <title>Modernizr - Javascript Example</title> <script src="http://ajax.googleapis.com/ajax/libs/jquery/1.7/jquery.min.js" type="text/javascript"></script> <script src="modernizr.js" type="text/javascript"></script> <script type="text/javascript"> $(document).ready(function() { if (Modernizr.websockets) { $("#result").html('你的瀏覽器支援 Web Sockets'); } else { $("#result").html('你的瀏覽器不支援 Web Sockets'); } }); </script> </head> <body> <p id="result"></p> </body> </html>
Modernizr CSS 范例:
<!DOCTYPE html> <html class="no-js"> <head> <title>Modernizr - CSS Example</title> <style type="text/css" media="screen"> div.wsno, div.wsyes { display: none } .no-websockets div.wsno { display: block } .websockets div.wsyes { display: block } </style> <script src="modernizr.js" type="text/javascript"></script> </head> <body> <div class="wsno"> 你的瀏覽器支援 WebSockets。 </div> <div class="wsyes"> 你的瀏覽器不支援 WebSockets。 </div> </body> </html>
注:来自维基百科,自由的百科全书
相关文章推荐
- 使用异步 I/O 大大提高应用程序的性能
- 函数的巩固
- 安装libpcap
- 用socketpair()进行进程间的全双工通讯
- ibatis 一对一,一对多
- 今天看到一份资料上有讲到Oracle分页优化
- Windows SharePoint Services 默认母版页
- Windows SharePoint Services 默认母版页
- HDU 1242 广搜模板
- Orge 安装
- 【Linux】Linux平台Cpu使用率的计算
- 数据库锁表
- 扫雷小游戏
- 从事企业级的项目开发
- 加载listview配合适配器的使用
- Highcharts + jQuery + Servlet 实现从后台获取JSON实时刷新图表
- android 自定义控件库(jar)时属性不能识别的来看吧
- 警惕常用这6种方式吃饭必得癌
- Selenium RC 环境搭建(eclipse)
- ASP.net 关于TextBox的TextMode=“PassWord”时的动态赋值