原译文地址:http://www.ido321.com/1116.html

原文:Detect HTML5 Features

译文:HTML5特性检测

译者:dwqs


着HTML 5的流行,现在HTML 5占据了主要的市场份额,HTML
5增加了很多的新功能,这些新功能可以让Web体验变得更好。大多数特性在现代的主流浏览器中获得了支持,因此我们可以放心使用这些新特性来增加Web体
验。但是,当有新版本的浏览器发布时,我们不要忘记一些旧版本或者老的浏览器。

目前的另外一个事实是,用户想用旧版本的浏览器来支持新特性。因此建立的产品必须是跨浏览器的,而我们唯一能做的就是HTML5特性检测,来确保指定特性被浏览器支持时才执行代码。

Modernizr
一个非常好的JS库,它可以完成对HTML 5和CSS
3的特性检测。默认情况下,modernizr会对所有特性进行检测(当然可以自定义),但如果你只想检测某一个特定功能而不像引入整个JS库,那你就得
把代码放在正确的位置。在这篇文章中,我们将会看到如何使用原生的js和modernizr来检测HTML 5 的特性。

Canvas

// JS
return !!document.createElement('canvas').getContext; // Modernizr
if (Modernizr.canvas) { }

Video

// JS
return !!document.createElement('video').canPlayType; // Modernizr
if (Modernizr.video) { }

Local Storage

// JS
return 'localStorage' in window && window['localStorage'] !== null; // Modernizr
if (Modernizr.localstorage) { }

Web Workers

// JS
return !!window.Worker; // Modernizr
if (Modernizr.webworkers) { }

Offline Web Application

// JS
return !!window.applicationCache; // Modernizr
if (Modernizr.applicationcache) { }

Geolocation

// JS
return 'geolocation' in navigator; // Modernizr
if (Modernizr.geolocation) { }

Placeholder Text

// JS
var i = document.createElement('input');
return 'placeholder' in i; // Modernizr
if (Modernizr.input.placeholder) { }

Form Autofocus

// JS
var i = document.createElement('input');
return 'autofocus' in i; // Modernizr
if (Modernizr.input.autofocus) { }

Microdata

// JS
return !!document.getItems; // Modernizr does not provide support to detect Microdata

History API(关于其介绍,请戳:http://www.ido321.com/1069.html  文章被伯乐在线转载:http://blog.jobbole.com/78876/)

// JS
return !!(window.history && history.pushState); // Modernizr
if (Modernizr.history) { }

到目前为止,这是我收集的特性检测的代码列表。如果你有特性检测的代码想要在列表中分享,也可以告诉我。

-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------

这里涵盖了Web开发,移动开发,Java等编程语言、综合资讯、SEO等名博,博客收录集地址:http://www.ido321.com/daohang/

怎么对HTML 5的特性做检测?的更多相关文章

  1. 常用的HTML5、CSS3新特性能力检测写法

    伴随着今年10月底HTML5标准版的发布,未来使用H5的场景会越来越多,这是令web开发者欢欣鼓舞的事情.然而有一个现实我们不得不看清,那就是IE系列浏览器还占有一大部分市场份额,以IE8.9为主,w ...

  2. 大数据DDos检测——DDos攻击本质上是时间序列数据,t+1时刻的数据特点和t时刻强相关,因此用HMM或者CRF来做检测是必然! 和一个句子的分词算法CRF没有区别!

    DDos攻击本质上是时间序列数据,t+1时刻的数据特点和t时刻强相关,因此用HMM或者CRF来做检测是必然!——和一个句子的分词算法CRF没有区别!注:传统DDos检测直接基于IP数据发送流量来识别, ...

  3. 分类器是如何做检测的?——CascadeClassifier中的detectMultiScale函数解读

    原地址:http://blog.csdn.net/delltdk/article/details/9186875 在进入detectMultiScal函数之前,首先需要对CascadeClassifi ...

  4. https ddos攻击——由于有了认证和加解密 后果更严重 看绿盟的产品目前对于https的ddos cc攻击需要基于内容做检测

    如果web服务器支持HTTPS,那么进行HTTPS洪水攻击是更为有效的一种攻击方式,一方面,在进行HTTPS通信时,web服务器需要消耗更多的资源用来进行认证和加解密,另一方面,一部分的防护设备无法对 ...

  5. 【iOS】利用Runtime特性做监控

    最近在看Object-C运行时特性,其中有一个特别好用的特性叫 Method Swizzling ,可以动态交换函数地址,在应用程序加载的时候,通过运行时特性互换两个函数的地址,不改变原有代码而改变原 ...

  6. 大场前端工程师常使用CSS3特性做跨域也是牛逼前端的开始之路

    通过 CSS3 的 content 获取内容,很有意思的一个思路,实际场景中有可能用的到: CSST (CSS Text Transformation) 利用js动态创建一个link插入到文档中, 请 ...

  7. 使用C#的Conditional特性与Unity编辑器宏命令做条件编译

    概要 在传统的C#项目中,用Conditional特性做条件编译时,需要在Visual Studio中项目的属性里添加上条件编译符号,用法参考这篇文章. 而在Unity项目中,条件编译符号需要在Uni ...

  8. 使用xmake检测编译器特性支持

    如果我们要写跨平台的c/c++代码,很多时候需要处理由于不同编译器对c/c++各个标准支持力度不同导致的兼容性问题,一般通常的解决办法是:自己在代码中通过宏去判断各个编译器的版本.内置宏.标准库宏._ ...

  9. JavaScript特性(attribute)、属性(property)和样式(style)

    最近在研读一本巨著<JavaScript忍者秘籍>,里面有一篇文章提到了这3个概念. 书中的源码可以在此下载.我将源码放到了线上,如果不想下载,可以直接访问在线网址,修改页面名就能访问到相 ...

随机推荐

  1. Using the Repository Pattern with ASP.NET MVC and Entity Framework

    原文:http://www.codeguru.com/csharp/.net/net_asp/mvc/using-the-repository-pattern-with-asp.net-mvc-and ...

  2. swift:类型转换(is用作判断检测、as用作类型向下转换)

    类型转换是一种检查类实例的方式,并且哦或者也是让实例作为它的父类或者子类的一种方式.   类型转换在Swift中使用is 和 as操作符实现.这两个操作符提供了一种简单达意的方式去检查值的类型或者转换 ...

  3. HDU5088——Revenge of Nim II(高斯消元&矩阵的秩)(BestCoder Round #16)

    Revenge of Nim II Problem DescriptionNim is a mathematical game of strategy in which two players tak ...

  4. Android Navigation Drawer,自定义ActionBar(标题居中)

    整个示例都是改造自 Google Android Training 中的 NavigationDrawer 示例(http://developer.android.com/training/imple ...

  5. 修练8年C++面向对象程序设计之体会

    http://pcedu.pconline.com.cn/empolder/gj/c/0504/609482_1.html

  6. iOS学习笔记:frame,bound,center, anchorPoint

    frame: View在它的Super View坐标系里的坐标 bound: 用来定义View自身坐标系和边界的Rect,Rect的原点表示View自身坐标系的原点坐标.举个例子: 一般情况下boun ...

  7. linux/unix网络编程之 select

    转自http://www.cnblogs.com/zhuwbox/p/4221934.html linux 下的 select 知识点 unp 的第六章已经描述的很清楚,我们这里简单的说下 selec ...

  8. struts2 获取前台表单的值?? 原理??

    struts2中,在ACTION中申明一个变量 private string 变量名:然后设置变量名 的get/set方法: 在运行的时候struts2会自动获取. 比如:jsp 页面中有个文本框&l ...

  9. 服务--web服务

    .面向对象和面向组件 .什么是Web服务 Web Service "Stack" .Web服务的应用分类 Web服务都是对象/组件技术在Internet中的延伸 面向对象和面向组件 ...

  10. UVA 11090 Going in Cycle!!(二分答案+判负环)

    在加权有向图中求平均权值最小的回路. 一上手没有思路,看到“回路”,第一想法就是找连通分量,可又是加权图,没什么好思路,那就转换题意:由求回路权值->判负环,求最小值->常用二分答案. 二 ...