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 相关文章推荐
[JS]点出统计器
Oct 11 Javascript
23个超流行的jQuery相册插件整理分享
Apr 25 Javascript
JavaScript动态操作表格实例(添加,删除行,列及单元格)
Nov 25 Javascript
jquery引用方法时传递参数原理分析
Oct 13 Javascript
js实现网页右上角滑出会自动消失大幅广告的方法
Feb 27 Javascript
跟我学习javascript的Date对象
Nov 19 Javascript
Javascript技术栈中的四种依赖注入详解
Feb 23 Javascript
vue之nextTick全面解析
May 17 Javascript
Angularjs自定义指令实现分页插件(DEMO)
Sep 16 Javascript
详解如何模拟实现node中的Events模块(通俗易懂版)
Apr 15 Javascript
JS对日期操作封装代码实例
Nov 08 Javascript
JS数据类型分类及常用判断方法
Nov 19 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
PHP array 的加法操作代码
2010/07/24 PHP
基于Discuz security.inc.php代码的深入分析
2013/06/03 PHP
thinkphp框架实现路由重定义简化url访问地址的方法分析
2020/04/04 PHP
用javascript实现改变TEXTAREA滚动条和按钮的颜色,以及怎样让滚动条变得扁平
2007/04/20 Javascript
[HTML/CSS/Javascript]WWTJS
2007/09/25 Javascript
JavaScript开发时的五个注意事项
2007/12/08 Javascript
JQuery UI的拖拽功能实现方法小结
2012/03/14 Javascript
使用js实现雪花飘落效果
2013/08/26 Javascript
js(jQuery)获取时间的方法及常用时间类搜集
2013/10/23 Javascript
jquery数组之存放checkbox全选值示例代码
2013/12/20 Javascript
js的隐含参数(arguments,callee,caller)使用方法
2014/01/28 Javascript
在AngularJS中如何使用谷歌地图把当前位置显示出来
2016/01/25 Javascript
jQuery实现表格文本框淡入更改值后淡出效果
2016/09/27 Javascript
vue.js表格组件开发的实例详解
2016/10/12 Javascript
使用JS正则表达式 替换括号,尖括号等
2016/11/29 Javascript
微信小程序开发中的疑问解答汇总
2017/07/03 Javascript
基于JavaScript实现多级菜单效果
2017/07/25 Javascript
angular2路由切换改变页面title的示例代码
2017/08/23 Javascript
详解Vue中一种简易路由传参办法
2017/09/15 Javascript
浅谈Vue初学之props的驼峰命名
2018/07/19 Javascript
vue+VeeValidate 校验范围实例详解(部分校验,全部校验)
2018/10/19 Javascript
jQuery+vue.js实现的多选下拉列表功能示例
2019/01/15 jQuery
详解nvm管理多版本node踩坑
2019/07/26 Javascript
使用React代码动态生成栅格布局的方法
2020/05/24 Javascript
python调用matlab的m自定义函数方法
2019/02/18 Python
python 回溯法模板详解
2020/02/26 Python
python文件读取失败怎么处理
2020/06/23 Python
推荐技术人员一款Python开源库(造数据神器)
2020/07/08 Python
Python + opencv对拍照得到的图片进行背景去除的实现方法
2020/11/18 Python
纯CSS3代码实现switch滑动开关按钮效果
2016/08/30 HTML / CSS
Sephora丝芙兰泰国官方网站:国际知名化妆品购物
2017/11/15 全球购物
英国领先的独立时装店:Van Mildert
2019/10/28 全球购物
法学专业个人求职信
2013/09/26 职场文书
pytorch--之halfTensor的使用详解
2021/05/24 Python
解决Windows Server2012 R2 无法安装 .NET Framework 3.5
2022/04/29 Servers
MySql数据库触发器使用教程
2022/06/01 MySQL