modernizr是为HTML5而生的——它是一个JS库,用于检测浏览器支持HTML5和CSS3的特性,基于这个框架实现著名的HTML5/CSS3浏览器兼容性网站FindmeByIP。
右下角的绿色按钮上有Modernizr链接。
Modernizr的功能
其实modernizr的功能很简单,就是用js检测浏览器支持HTML5/CSS3的特性,支持页面上的某个属性。<html>在标签上添加相应的class,如果不支持,则添加no-前缀class,例如,如果检测到的浏览器支持video标签,modernizr<html>在标签上添加video类,否则,添加no-video类。
查看FindMebyIP的源代码或使用firebug等工具查看页面代码<HTML>标签中的class。
此外,modernizr还提供了另一种用法,即单独检测浏览器对某一特性的支持,例如:
if (Modernizr.video) {}
通过类似的接口检测浏览器对HTML5的支持相对安全。
浏览器检测:UA VS 特性
事实上,我们通常使用UA来检测浏览器。当然,UA也提供了更丰富的信息。UA不是万能的,它也有一些弱点。例如,用户浏览器的UA伪装和一些落后浏览器提供的UA信息太少,这将影响对浏览器信息的判断。更重要的是,对于HTML5特性,用UA判断浏览器是否支持某个特性太复杂和不可靠。
当然,关于UA和特性检测的争论一直存在。我在这里想说的是,在网站上使用HTML5来检测特性支持比UA更可靠、更方便~~
Modernizr使用
modernizr的使用非常简单,只需将js文件引入页面:
<script type="text/javascript" src="modernizr-1.5.js"></script>
Modernizr它是开源的,但由于某种原因,它被G-FW封住了。
Modernizr @ git
modernizr项目托管在git,您可以通过以下地址获得它:
http://github.com/Modernizr/Modernizr
作者还在git提供了一个简单的输出页面:
http://modernizr.github.com/Modernizr/output.html
还有详细的测试页面:
http://modernizr.github.com/Modernizr/test/index.html
扩展阅读:
detacting HTML5 features
Safely Deploy HTML5 and CSS3 with Modernizr