Javascript 检测css支持的正确方法是什么;“弹性箱”;及;柔性包装;?
我正在寻找一个解决方案,如何通过JavaScript检测cssJavascript 检测css支持的正确方法是什么;“弹性箱”;及;柔性包装;?,javascript,css,flexbox,detection,Javascript,Css,Flexbox,Detection,我正在寻找一个解决方案,如何通过JavaScript检测cssflex box和flex wrap的支持 我知道modernizer可以完成这项工作,但我的客户端不允许我们在head部分中加载任何脚本,不幸的是,在页脚中加载时,这不起作用 在所有类型的浏览器/设备上实现此检测的正确方法是什么 我们如何通过以下方式检测对css flex box和flex wrap的支持: JavaScript 创建一个元素并检查样式属性。如果支持,它将不返回任何内容,即',否则它将返回未定义的 例如,如果您在Ch
flex box
和flex wrap
的支持
我知道modernizer
可以完成这项工作,但我的客户端不允许我们在head部分中加载任何脚本,不幸的是,在页脚中加载时,这不起作用
在所有类型的浏览器/设备上实现此检测的正确方法是什么
我们如何通过以下方式检测对css flex box和flex wrap的支持:
JavaScript
创建一个元素并检查样式属性。如果支持,它将不返回任何内容,即'
,否则它将返回未定义的
例如,如果您在Chrome中运行下面的代码段,您将获得列的未定义,以及柔性包裹的'
片段:
console.log('flex='+document.createElement(“p”).style.flex);
log('columns='+document.createElement(“p”).style.columns);
console.log('flex-wrap='+document.createElement(“p”).style.flexWrap)代码>
因为在IE上不支持
这种稳健的方法可以测试任何属性:值支持:
var cssprPropertySupported=(函数(){
var mem={};//保存测试结果,以便将来使用相同参数进行高效调用
返回函数cssPropertySupported(属性、值){
if(mem[prop+值])
返回mem[prop+值];
var element=document.createElement('p'),
index=value.length,
名称
结果=假;
试一试{
而(索引--){
名称=值[索引];
element.style.display=名称;
if(element.style.display==名称){
结果=真;
打破
}
}
}
捕获(pError){}
mem[prop+值]=结果;
返回结果;
}
})();
/////////测试:////////////////////
console.log(
cssPropertySupported('display'、['-ms flexbox'、'-webkit box'、'flex']))
)
Yep,IE11-和Saf 8-根据(TIL Edge和Safari 9将)您提到的JS方法在IE10中返回未定义的值,而它是受支持的,因此这似乎不是一种正确的检测方法,因为现在我正在使用您的方法,并结合IE10检查,这似乎效果很好。