Javascript 你能测试浏览器对-moz线性渐变的支持吗?

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不是样式属性,而是样式值 有人知道如何在不使用版本号的情况下对此进行测试吗?我不知道如何测试,但是(一个很好的小功能检测脚本)似乎可以做到这一点 我想您可以创建一个(

我想使用功能检测来判断用户版本的Firefox是否支持CSS样式值
-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