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 相关文章推荐
JavaScript XML实现两级级联下拉列表
Nov 10 Javascript
JQuery设置文本框和密码框得到焦点时的样式
Aug 30 Javascript
javascript full screen 全屏显示页面元素的方法
Sep 27 Javascript
JS遍历Json字符串中键值对先转成JSON对象再遍历
Aug 15 Javascript
javascript鼠标滑动评分控件完整实例
May 13 Javascript
js小数运算出现多位小数如何解决
Oct 08 Javascript
鼠标点击input,显示瞬间的边框颜色,对之修改与隐藏实例
Dec 26 Javascript
原生JavaScript实现AJAX、JSONP
Feb 07 Javascript
JS正则表达式完美实现身份证校验功能
Oct 18 Javascript
JavaScript深拷贝和浅拷贝概念与用法实例分析
Jun 07 Javascript
详解webpack-dev-middleware 源码解读
Mar 23 Javascript
精读《Vue3.0 Function API》
May 20 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
Protoss热键控制
2020/03/14 星际争霸
php实现的一个很好用HTML解析器类可用于采集数据
2013/09/23 PHP
PHP根据IP地址获取所在城市具体实现
2013/11/27 PHP
php中有关合并某一字段键值相同的数组合并的改进
2015/03/10 PHP
基于JQuery+PHP编写砸金蛋中奖程序
2015/09/08 PHP
jQuery旋转插件—rotate支持(ie/Firefox/SafariOpera/Chrome)
2013/01/16 Javascript
js实现百度联盟中一款不错的图片切换效果完整实例
2015/03/04 Javascript
JavaScript通过prototype给对象定义属性用法实例
2015/03/23 Javascript
jquery实现鼠标拖拽滑动效果来选择数字的方法
2015/05/04 Javascript
Jquery easyui 实现动态树
2015/11/17 Javascript
Bootstrap每天必学之栅格系统(布局)
2015/11/25 Javascript
JS 清除字符串数组中,重复元素的实现方法
2016/05/24 Javascript
JavaScript_object基础入门(必看篇)
2016/06/13 Javascript
基于Vuejs框架实现翻页组件
2020/06/29 Javascript
Bootstrap面板使用方法
2017/01/16 Javascript
Bootstrap与Angularjs的模态框实例代码
2017/08/03 Javascript
BootStrap给table表格的每一行添加一个按钮事件
2017/09/07 Javascript
React教程之封装一个Portal可复用组件的方法
2018/01/02 Javascript
详解angular2如何手动点击特定元素上的点击事件
2018/10/16 Javascript
jquery实现自定义树形表格的方法【自定义树形结构table】
2019/07/12 jQuery
手把手教您实现react异步加载高阶组件
2020/04/07 Javascript
[03:37]2015国际邀请赛第四日现场精彩集锦
2015/08/08 DOTA
python列表操作实例
2015/01/14 Python
利用pyinstaller或virtualenv将python程序打包详解
2017/03/22 Python
用python实现对比两张图片的不同
2018/02/05 Python
python读取一个目录下所有txt里面的内容方法
2018/06/23 Python
详解用pyecharts Geo实现动态数据热力图城市找不到问题解决
2019/06/26 Python
python 叠加等边三角形的绘制的实现
2019/08/14 Python
Python操作多维数组输出和矩阵运算示例
2019/11/28 Python
DC Shoes官网:美国滑板鞋和服饰品牌
2017/09/03 全球购物
公共事业管理本科生求职信
2013/10/07 职场文书
2014年服务员工作总结
2014/11/18 职场文书
2014年酒店年度工作总结
2014/12/10 职场文书
python基础之爬虫入门
2021/05/10 Python
Android学习之BottomSheetDialog组件的使用
2022/06/21 Java/Android
Nginx 502 bad gateway错误解决的九种方案及原因
2022/08/14 Servers