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

 更新时间:2012年09月26日 19:05:01   作者:  
在项目中需要快速检测浏览器是否支持某CSS3特性,比如检测是否支持“transform”,然后我的布局会有两种完全不同的版式

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

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

优点:

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

modernizr

除此之外还有一种不太好的方法,那就是判断浏览器的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,这是它所支持的属性的数组列表。

div.style

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做拖动布局的思路

    这几天不是很忙,就找了些拖动布局方面的资料看看,也学着写了个拖动布局的效果,没想到花了好多时间,七拼八凑,总算是把这个效果写出来了。
    2010-10-10
  • javascript 中关于array的常用方法详解

    javascript 中关于array的常用方法详解

    这篇文章主要介绍了javascript 中关于array的常用方法的相关资料,需要的朋友可以参考下
    2017-05-05
  • 编程语言JavaScript简介

    编程语言JavaScript简介

    这篇文章主要介绍了编程语言JavaScript简介,本文讲解了JavaScript是什么、JavaScript特点、JavaScript和Java的区别等内容,需要的朋友可以参考下
    2014-10-10
  • js两个数组合并去重的方法大全

    js两个数组合并去重的方法大全

    这篇文章主要给大家介绍了关于js两个数组合并去重的相关资料,日常开发中经常会用到的JS数组去重,文中将每种方法都给出了代码示例,需要的朋友可以参考下
    2023-09-09
  • JavaScript 保护变量不被随意修改的实现代码

    JavaScript 保护变量不被随意修改的实现代码

    本文通过实例代码给大家分享JavaScript 保护变量不被随意修改的实现方法,需要的朋友参考下吧
    2017-09-09
  • js实现自定义右键菜单

    js实现自定义右键菜单

    这篇文章主要为大家详细介绍了js实现自定义右键菜单,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2020-05-05
  • 小程序清理本地缓存的方法

    小程序清理本地缓存的方法

    这篇文章主要介绍了小程序清理本地缓存的方法,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2018-08-08
  • webpack5的loader配置小白学习篇

    webpack5的loader配置小白学习篇

    这篇文章主要为大家介绍了webpack5的loader配置非常适合webpack入门的小白学习,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2023-05-05
  • 原生JavaScript实现Ajax异步请求

    原生JavaScript实现Ajax异步请求

    ajax现在是一种非常流行的技术,现在虽然可以利用JQuery或者一些第三方插件甚至微软提供的一些控件可以方面的实现ajax功能,但是明白其原理也是非常重要的,下面是来使用纯javascript实现获取服务器端的功能来展示如何使用纯javascript实现ajax功能,以弄清其原理.
    2017-11-11
  • JavaScript事件

    JavaScript事件 "事件对象"的注意要点

    这篇文章主要介绍了JavaScript事件,告诉大家"事件对象"的注意要点,感兴趣的小伙伴们可以参考一下
    2016-01-01

最新评论