Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/386.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 检测css支持的正确方法是什么;“弹性箱”;及;柔性包装;?_Javascript_Css_Flexbox_Detection - Fatal编程技术网

Javascript 检测css支持的正确方法是什么;“弹性箱”;及;柔性包装;?

Javascript 检测css支持的正确方法是什么;“弹性箱”;及;柔性包装;?,javascript,css,flexbox,detection,Javascript,Css,Flexbox,Detection,我正在寻找一个解决方案,如何通过JavaScript检测cssflex box和flex wrap的支持 我知道modernizer可以完成这项工作,但我的客户端不允许我们在head部分中加载任何脚本,不幸的是,在页脚中加载时,这不起作用 在所有类型的浏览器/设备上实现此检测的正确方法是什么 我们如何通过以下方式检测对css flex box和flex wrap的支持: JavaScript 创建一个元素并检查样式属性。如果支持,它将不返回任何内容,即',否则它将返回未定义的 例如,如果您在Ch

我正在寻找一个解决方案,如何通过JavaScript检测css
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检查,这似乎效果很好。