我只是在玩弄这个modernizr,想找出他们如何检查用户浏览器中是否支持某个CSS属性,基本上我只想有一个小脚本,告诉我用户的浏览器是否支持CSS过渡效果。我将modernizr的代码抽象到以下类似的形式:
Elem = document.createElement('Alx');
eStyle = Elem.style;
var cssProp = (function check(){
props = ["transition", "WebkitTransition", "MozTransition", "OTransition", "msTransition"];
for(var i in props) {
var prop = props[i];
console.log(prop);
if (!contains('-' , prop) && eStyle[prop] !== undefined ) {
return prop;
}
}
})();
/* The contains function */
function contains( str, substr ) {
return !!~('' + str).indexOf(substr);
}
Modernizr几乎做了相同的事情,我只是做了一些更改并硬编码了数组值以简化事情。脚本的工作方式如下。
创建一个html元素(不必是有效的html元素)。
执行一个IIFE,基本上遍历所有可能的浏览器版本的css属性以及标准的W3C变体。检查是否可以将该属性应用于我们创建的html元素,如果无法应用,则
if
条件失败并返回未定义。如果if条件通过,则正确的css-3支持属性将被返回并存储在cssProps中。
我只想知道,这是一种检查用户浏览器中支持哪种过渡效果的绝对可靠的方法吗?还是说它根本没有得到支持?
这实际上是我第一次尝试浏览器特性检测,所以我想知道。