Javascript 检测对背景大小的支持:封面
什么是检测对CSS3后台大小:cover的支持的保存方法,特别是在IE<9的情况下 以下测试在IE<9中返回假阳性,因为它实际上设置了要覆盖的背景大小: 我在测试以下各项时得到的唯一真实结果:Javascript 检测对背景大小的支持:封面,javascript,jquery,css,Javascript,Jquery,Css,什么是检测对CSS3后台大小:cover的支持的保存方法,特别是在IE
if ('backgroundSize' in div.style)
但根据该网站的说法,IE 6/7/8应该自动返回,只支持覆盖和包含
编辑:
我想使用我自己的解决方案,但我已经检查了。
他们似乎使用了相同的技术,在IE<9中给我假阳性结果:
设置backgroundSize='cover',然后检查样式。backgroundSize=='cover'
请参阅我的。如果使用
modernizer
,则只能下载执行此类任务所需的代码
然后你可以用
if (Modernizr.backgroundsize) {
/* backgroundSize supported */
}
如果你试图检测低功能的浏览器,以避免将邮票图像卡在事物的中间,那么一个快速而肮脏的解决方案就是
var rules = document.styleSheets[0].cssRules;
如果它未定义,那么您知道您的浏览器功能低下,可能应该采用回退方法。YMMV.这是单独使用javascript,没有jquery,只需检查您删除的浏览器版本即可
//check if Is bad IE.
var noBGSizeSupport = window.attachEvent && !window.addEventListener
if(noBGSizeSupport){
//does not support BG size property
} else {
// supports background size property
}
在设置BackgroundSize之前,需要检查它是否作为样式属性存在
var supported = ('backgroundSize' in document.documentElement.style);
if(supported){
var temp = document.createElement('div');
temp.style.backgroundSize = 'cover';
supported = temp.style.backgroundSize == 'cover';
};
return supported;
资料来源:
在此之前,您可能还想尝试使用CSS.supports()进行检测。
请参阅MDN:谢谢Fabrizio。我想使用我自己的解决方案,但检查了他们的代码:看起来他们使用了类似的代码,给出了误报:设置样式,然后检查样式。backgroundSize==‘cover’。@JohnB。这似乎是他们对
cover
的测试,这是一个糟糕的建议。一个API的存在并不决定另一个API的存在。最好通过测试可用属性来使用适当的特征检测。这是完全可能的,无需对两个不相关的API做出奇怪的假设。
var supported = ('backgroundSize' in document.documentElement.style);
if(supported){
var temp = document.createElement('div');
temp.style.backgroundSize = 'cover';
supported = temp.style.backgroundSize == 'cover';
};
return supported;