Javascript 你能测试浏览器对-moz线性渐变的支持吗?
我想使用功能检测来判断用户版本的Firefox是否支持CSS样式值Javascript 你能测试浏览器对-moz线性渐变的支持吗?,javascript,css,firefox,Javascript,Css,Firefox,我想使用功能检测来判断用户版本的Firefox是否支持CSS样式值-moz linear gradient。(这是在Gecko 1.9.2中添加的。Firefox的3.6版使用此功能。) 我不能使用document.body.style.mozLinearGradient(或类似的东西),因为-moz linear gradient不是样式属性,而是样式值 有人知道如何在不使用版本号的情况下对此进行测试吗?我不知道如何测试,但是(一个很好的小功能检测脚本)似乎可以做到这一点 我想您可以创建一个(
-moz linear gradient
。(这是在Gecko 1.9.2中添加的。Firefox的3.6版使用此功能。)
我不能使用document.body.style.mozLinearGradient
(或类似的东西),因为-moz linear gradient
不是样式属性,而是样式值
有人知道如何在不使用版本号的情况下对此进行测试吗?我不知道如何测试,但是(一个很好的小功能检测脚本)似乎可以做到这一点
我想您可以创建一个(屏幕外?)元素,将其设置为样式,然后在DOM中查看浏览器是否成功应用了它?只需将其指定为样式值,然后检查是否存在 启动示例:
function supportsMozLinearGradient() {
var element = document.getElementsByTagName('script')[0]; // Just grab an "invisible" element.
var oldstyle = element.style.background; // Backup old style.
try {
element.style.background = '-moz-linear-gradient(top, black, white)';
} catch(e) {
// Ignore failures.
}
var supports = element.style.background.indexOf('-moz-linear-gradient') > -1; // Did it accept?
element.style.background = oldstyle; // Restore old style.
return supports;
}
您应该检查
-moz背景大小
(Firefox v3.6中引入)。由于该属性带有前缀,其他浏览器将无法获取该推断
if ('MozBackgroundSize' in document.body.style)
这就是MooTools检测Gecko(Firefox)引擎的方式(我稍微“解释一下”) 如果它是FF,它将返回19或18,我相信19是3.x,18是2.x 显然,FF3.6不再支持
document.getBoxObjectFor
,所以要检测3.6,我基本上是这样做的
isFF36 = gecko && !document.getBoxObjectFor
我做过几次测试,效果很好
如果您不使用MooTools,您可能可以将这两个语句组合成一个语句,返回类似于
false
或'ff'
或'f36'
的内容,但我太懒了,无法处理这个逻辑:)看起来Modernizer就是这样做的。它创建了一个DOM元素,但没有将其添加到页面中!不!功能检测,而不是浏览器检测!否则,随着渲染引擎的新版本/变体的出现,您将面临无休止的维护更新。如果下一个gecko删除或更改了对您所依赖的内容的支持,该怎么办?
isFF36 = gecko && !document.getBoxObjectFor