JavaScript快速检测浏览器对CSS3特性的支持情况


Posted in Javascript onSeptember 26, 2012

在项目中需要快速检测浏览器是否支持某CSS3特性,比如检测是否支持“transform”,然后我的布局会有两种完全不同的版式。

当然除开本文介绍的这种快速方法,还有一种更有名和更通用的方法,那就是modernizr,运行脚本之后它会在html的class上加上浏览器支持的所有特性的列表。

优点:

js是可配置的,不需要的特性检测可以在配置脚本中去掉基于特性检测js库简单好用

JavaScript快速检测浏览器对CSS3特性的支持情况

除此之外还有一种不太好的方法,那就是判断浏览器的UA,不好的原因是UA可能会伪造,而且版本判断繁琐,还有不稳定。

优点:性能可能是最优的

最后就是本文介绍的这个方法,我写了一个函数快速检测是否浏览器支持某CSS特性,适合的场景是快速需要知道浏览器是否支持某一个CSS特性(而不是好几个)。

优点:

性能不错通用性强适合检测单个CSS特性
var supports = (function() { 
var div = document.createElement('div'), 
vendors = 'Khtml O Moz Webkit'.split(' '), 
len = vendors.length; 
return function(prop) { 
if ( prop in div.style ) return true; 
if ('-ms-' + prop in div.style) return true; 
prop = prop.replace(/^[a-z]/, function(val) { 
return val.toUpperCase(); 
}); 
while(len--) { 
if ( vendors[len] + prop in div.style ) { 
return true; 
} 
} 
return false; 
}; 
})(); 
if ( supports('textShadow') ) { 
document.documentElement.className += ' textShadow'; 
}

这就是最终代码,原理是:

1.创建一个div,然后可以获得div.style,这是它所支持的属性的数组列表。

JavaScript快速检测浏览器对CSS3特性的支持情况

2.检查text是否包含在数组中,如果是,直接返回true。

3.检查各种前缀,比如Webkit加上text,即webkitTransition,如果包含在style中,返回true。

4.值得注意的是在CSS中属性名为:-webkit-transition,但是在DOM的style中 ,却是对应webkitTransition。我也不知道为什么会这样。

参考资料:http://net.tutsplus.com/tutorials/html-css-techniques/quick-tip-detect-css-support-in-browsers-with-javascript/

Javascript 相关文章推荐
ExtJs的Date格式字符代码
Dec 30 Javascript
从零开始学习jQuery (十) jQueryUI常用功能实战
Feb 23 Javascript
js定时器的使用(实例讲解)
Jan 06 Javascript
jquery插件validation实现验证身份证号等
Jun 04 Javascript
javascript实现倒计时跳转页面
Jan 17 Javascript
Angular2学习笔记——详解NgModule模块
Dec 02 Javascript
基于jQuery实现弹幕APP
Feb 10 Javascript
从零开始学习Node.js系列教程之基于connect和express框架的多页面实现数学运算示例
Apr 13 Javascript
JavaScript正则表达式简单实用实例
Jun 23 Javascript
JavaScript 隐性类型转换步骤浅析
Mar 15 Javascript
微信小程序简单的canvas裁剪图片功能详解
Jul 12 Javascript
Vue.js实现大屏数字滚动翻转效果
Nov 29 Javascript
JavaScript 参数中的数组展开 [译]
Sep 21 #Javascript
JavaScript中将一个值转换为字符串的方法分析[译]
Sep 21 #Javascript
使用apply方法处理数组的三个技巧[译]
Sep 20 #Javascript
js DOM 元素ID就是全局变量
Sep 20 #Javascript
JavaScript NaN和Infinity特殊值 [译]
Sep 20 #Javascript
JavaScript 更严格的相等 [译]
Sep 20 #Javascript
JavaScript 反科里化 this [译]
Sep 20 #Javascript
You might like
php5 mysql分页实例代码
2008/04/10 PHP
php json与xml序列化/反序列化
2013/10/28 PHP
PHP中捕获超时事件的方法实例
2015/02/12 PHP
PHP基于递归算法解决兔子生兔子问题
2018/05/11 PHP
JQuery 入门实例1
2009/06/25 Javascript
javascript EXCEL 操作类代码
2009/07/30 Javascript
JavaScript Cookie 直接浏览网站分网址
2009/12/08 Javascript
javascript 实用的文字链提示框效果
2010/06/30 Javascript
javascript动态改变img的src属性图片不显示的解决方法
2010/10/20 Javascript
JS随机漂浮广告代码具体实例
2013/11/19 Javascript
使用node.js 获取客户端信息代码分享
2014/11/26 Javascript
JS实现超过长度限制后自动跳转下一款文本框的方法
2015/02/23 Javascript
jQuery实现的自定义滚动条实例详解
2016/09/20 Javascript
利用D3.js实现最简单的柱状图示例代码
2016/12/09 Javascript
AngularJs实现聊天列表实时刷新功能
2017/06/15 Javascript
js数组常用最重要的方法
2018/02/04 Javascript
Vue左滑组件slider使用详解
2020/08/21 Javascript
如何在vue中使用kindeditor富文本编辑器
2020/12/19 Vue.js
微信小程序自定义支持图片的弹窗
2020/12/21 Javascript
Python中的map()函数和reduce()函数的用法
2015/04/27 Python
Python中json格式数据的编码与解码方法详解
2016/07/01 Python
Python的面向对象编程方式学习笔记
2016/07/12 Python
python dataframe 输出结果整行显示的方法
2018/06/14 Python
详解如何将python3.6软件的py文件打包成exe程序
2018/10/09 Python
对python mayavi三维绘图的实现详解
2019/01/08 Python
python 搜索大文件的实例代码
2019/07/08 Python
基于Keras的格式化输出Loss实现方式
2020/06/17 Python
Python应用实现双指数函数及拟合代码实例
2020/06/19 Python
全球最大的网上自行车商店:Chain Reaction Cycles
2016/12/02 全球购物
瑜伽国际:Yoga International
2018/04/18 全球购物
怎样声明接口
2014/09/19 面试题
大四学生思想汇报
2014/01/13 职场文书
2015年挂职干部工作总结
2015/05/14 职场文书
企业党建工作总结2015
2015/05/26 职场文书
《伯牙绝弦》教学反思
2016/02/16 职场文书
《传颂之物 虚伪的假面》BD发售宣传CM公开
2022/04/04 日漫