怎么对HTML 5的特性做检测?
原译文地址:http://www.ido321.com/1116.html
译文: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的特性做检测?的更多相关文章
- 常用的HTML5、CSS3新特性能力检测写法
伴随着今年10月底HTML5标准版的发布,未来使用H5的场景会越来越多,这是令web开发者欢欣鼓舞的事情.然而有一个现实我们不得不看清,那就是IE系列浏览器还占有一大部分市场份额,以IE8.9为主,w ...
- 大数据DDos检测——DDos攻击本质上是时间序列数据,t+1时刻的数据特点和t时刻强相关,因此用HMM或者CRF来做检测是必然! 和一个句子的分词算法CRF没有区别!
DDos攻击本质上是时间序列数据,t+1时刻的数据特点和t时刻强相关,因此用HMM或者CRF来做检测是必然!——和一个句子的分词算法CRF没有区别!注:传统DDos检测直接基于IP数据发送流量来识别, ...
- 分类器是如何做检测的?——CascadeClassifier中的detectMultiScale函数解读
原地址:http://blog.csdn.net/delltdk/article/details/9186875 在进入detectMultiScal函数之前,首先需要对CascadeClassifi ...
- https ddos攻击——由于有了认证和加解密 后果更严重 看绿盟的产品目前对于https的ddos cc攻击需要基于内容做检测
如果web服务器支持HTTPS,那么进行HTTPS洪水攻击是更为有效的一种攻击方式,一方面,在进行HTTPS通信时,web服务器需要消耗更多的资源用来进行认证和加解密,另一方面,一部分的防护设备无法对 ...
- 【iOS】利用Runtime特性做监控
最近在看Object-C运行时特性,其中有一个特别好用的特性叫 Method Swizzling ,可以动态交换函数地址,在应用程序加载的时候,通过运行时特性互换两个函数的地址,不改变原有代码而改变原 ...
- 大场前端工程师常使用CSS3特性做跨域也是牛逼前端的开始之路
通过 CSS3 的 content 获取内容,很有意思的一个思路,实际场景中有可能用的到: CSST (CSS Text Transformation) 利用js动态创建一个link插入到文档中, 请 ...
- 使用C#的Conditional特性与Unity编辑器宏命令做条件编译
概要 在传统的C#项目中,用Conditional特性做条件编译时,需要在Visual Studio中项目的属性里添加上条件编译符号,用法参考这篇文章. 而在Unity项目中,条件编译符号需要在Uni ...
- 使用xmake检测编译器特性支持
如果我们要写跨平台的c/c++代码,很多时候需要处理由于不同编译器对c/c++各个标准支持力度不同导致的兼容性问题,一般通常的解决办法是:自己在代码中通过宏去判断各个编译器的版本.内置宏.标准库宏._ ...
- JavaScript特性(attribute)、属性(property)和样式(style)
最近在研读一本巨著<JavaScript忍者秘籍>,里面有一篇文章提到了这3个概念. 书中的源码可以在此下载.我将源码放到了线上,如果不想下载,可以直接访问在线网址,修改页面名就能访问到相 ...
随机推荐
- QSS的作用需要正确设置文件编码才能起作用
QT这个库,无非使用OO对跨平台做了绝佳的封装,这其中的主要工作也就是比较繁琐而已,但并不多么了不起.唯独其中提供的QSS功能,让我感到十分神奇,做出来的效果实在很惊艳,而使用代码却又是如此简单,而且 ...
- zenmap 的扫描方式
第一种:Intense scan (nmap -T4 -A -v) 一般来说,Intense scan可以满足一般扫描 -T4 加快执行速度 -A 操作系统及版本探测 -v 显示详细的输出 第二种:I ...
- Shuffle和排序
MapReduce确保每个reducer的输入都按键排序.系统执行排序的过程——将map输出作为输入传给reducer——称为shuffle.shuffle属于不断被优化和改进的代码库的一部分,从许多 ...
- BZOJ 3140 消毒(最小顶点覆盖)
题目链接:http://61.187.179.132/JudgeOnline/problem.php?id=3140 题意:最近在生物实验室工作的小T遇到了大麻烦. 由于实验室最近升级的缘故,他的分格 ...
- Android开发之创建桌面快捷方式
Android创建桌面快捷方式就是在桌面这个应用上创建一个快捷方式,桌面应用:launcher2 通过查看launcher2的清单文件: <!-- Intent received used to ...
- log4j配置webapp日志系统
1.基础知识: Log4j的中文文档 (这是根据最新的log4j(jakarta-log4j-1.2.8)的开发包自带文档的manual翻译的) http://dev.csdn.net/develop ...
- bzoj1109
我们设f[i]为保留第i个木块最多的符合未知数 显然f[i]=max(f[j])+1 满足i>j a[i]>a[j] i-j>=a[i]-a[j] 我们把最后一个式子变成a[i]-i ...
- VB获取浏览器版本
String userAgent; userAgent = Request.UserAgent; ) { // The browser is Microsoft Internet Explorer V ...
- BZOJ3681: Arietta
题解: 数据结构来优化网络流,貌似都是用一段区间来表示一个点,然后各种乱搞... 发现主席树好吊...在树上建主席树貌似有三种方法: 1.建每个点到根节点这条链上的主席树,可以回答和两点间的路径的XX ...
- Grunt + Bower—前端构建利器(转)
目前比较流行的WEB开发的趋势是前后端分离.前端采用重量级的Javascript框架,比如Angular,Ember等,后端采用restful API的Web Service服务,通过JSON格式进行 ...