Javascript 检测对背景大小的支持:封面

Javascript 检测对背景大小的支持:封面,javascript,jquery,css,Javascript,Jquery,Css,什么是检测对CSS3后台大小:cover的支持的保存方法,特别是在IE

什么是检测对CSS3后台大小:cover的支持的保存方法,特别是在IE<9的情况下

以下测试在IE<9中返回假阳性,因为它实际上设置了要覆盖的背景大小:

我在测试以下各项时得到的唯一真实结果:

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;