Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/svg/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Browser svg过滤器的功能检测支持_Browser_Svg_Gaussian_Svg Filters_Browser Feature Detection - Fatal编程技术网

Browser svg过滤器的功能检测支持

Browser svg过滤器的功能检测支持,browser,svg,gaussian,svg-filters,browser-feature-detection,Browser,Svg,Gaussian,Svg Filters,Browser Feature Detection,我需要检测浏览器是否支持svg过滤器(具体来说是feGaussianBlur)。我将如何对此进行测试?Safari不支持过滤器,它会默默地忽略过滤器。我创建了一个小提琴来检查GaussianBlur属性的存在。 假设GaussianBlur有一个方法setstddevision,我们检查该方法是否存在,当失败时,我们得出结论,当前浏览器不支持该过滤器 当这个提琴被选中时,safari文本将显示为红色,而firefox文本将显示为绿色。您可能还可以检查接口上可用的枚举,例如: var suppor

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

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


当这个提琴被选中时,safari文本将显示为红色,而firefox文本将显示为绿色。

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

var supportsfilter = typeof SVGFEColorMatrixElement !== undefined && 
                     SVGFEColorMatrixElement.SVG_FECOLORMATRIX_TYPE_SATURATE==2;
这样,您就不必像中那样构造新元素。我还没有测试过它在Safari中是否能像预期的那样工作

更新:
提交给Modernizer的补丁:

我为遗留的Androids bug添加了一个小修改

var supportsfilter = window['SVGFEColorMatrixElement'] !== undefined && SVGFEColorMatrixElement.SVG_FECOLORMATRIX_TYPE_SATURATE == 2

if(filterTag.constructor.toString().indexOf('SVGFilterElement')!=-1)
测试没有正确检测Opera(支持svg过滤器)。@Erik Dahlstrom-不错的地方,尽管玩了一点,但这行代码看起来还是没有必要的。我已经将测试缩减到只有3行,这将在不同浏览器中提供所需的结果
var blur=document.createElements(“http://www.w3.org/2000/svg“,“feGaussianBlur”);blur.setAttribute(“stdDeviation”、“2”);返回值(typeof blur.setstddevision!=“未定义”)SVGFEColorMatrixElement
之前,这些属性不会显示在DOM中(没有初始化?)。我已经在safari中进行了测试,正如您所料,会抛出一个引用错误,因此测试需要一个try/catch块+1如果浏览器实现了相应的DOM接口,则这些只是应该始终存在的常量。那么使用typeof的变体呢?@ErikDahlström,我试图在svg文档中使用console.log(document.implementation.hasFeature(“,“1.1”))来解决这个问题,但不幸的是,在Firefox和safari中都返回false。请告诉我怎么做。