3

我需要检测浏览器是否支持 svg 过滤器(具体来说是 feGaussianBlur)。我将如何进行测试?不支持过滤器的 Safari 会默默地忽略过滤器。

4

3 回答 3

4

您可能还可以检查接口上可用的枚举,例如:

var supportsfilter = typeof SVGFEColorMatrixElement !== undefined && 
                     SVGFEColorMatrixElement.SVG_FECOLORMATRIX_TYPE_SATURATE==2;

这样您就不必构造新元素,如https://stackoverflow.com/a/9767059/109374中所示。我还没有测试过这是否在 Safari 中按预期工作。

更新: 提交给modernizr的补丁:https ://github.com/Modernizr/Modernizr/pull/531

于 2012-03-19T13:33:40.970 回答
2

我创建了一个小提琴http://jsfiddle.net/yxVSe/,它检查 GaussianBlur 属性的存在。假设 GaussianBlur 有一个方法setStdDeviation,我们检查该方法是否存在,当失败时我们得出当前浏览器不支持该过滤器的结论。

当这个小提琴在 safari 中检查时,文本将是红色的,而在 Firefox 中它将是绿色的。

于 2012-03-19T08:36:06.990 回答
0

我为遗留的 Android 错误添加了一个小修改

var supportsfilter = window['SVGFEColorMatrixElement'] !== undefined && SVGFEColorMatrixElement.SVG_FECOLORMATRIX_TYPE_SATURATE == 2
于 2014-01-10T10:03:20.597 回答