Firefox 中的 SVG 过滤器

2024-04-05

由于某些原因,我无法让我的 SVG 过滤器在 Firefox 中工作。然而它们在 Opera 中工作得很好。我将其属性设置为过滤器的元素就消失了。这很奇怪。

这是我的 JavaScript 代码:

defsElement = SVGDoc.createElement("defs");
var filterElement = SVGDoc.createElement("filter");
filterElement.setAttribute( "id", "cm-mat");
filterElement.setAttribute( "filterUnits", "objectBoundingBox");

var fecolormatrixElement = SVGDoc.createElement("feColorMatrix");
fecolormatrixElement.setAttribute("type", "matrix");
fecolormatrixElement.setAttribute("in", "SourceGraphic");
fecolormatrixElement.setAttributeNS(null, "values", "1 1 1 1 1  2 2 2 2 1  1 1 1 1 1  1 1 1 1 1");
filterElement.appendChild(fecolormatrixElement);
defsElement.appendChild(filterElement);
SVGDoc.documentElement.insertBefore(defsElement, SVGDoc.documentElement.childNodes.item(1));

partRef = getElementFromID(SVGDoc.documentElement, part);
if(partRef != null)
{
    partRef.style.setProperty('filter', 'url(#cm-mat)', null);
}

有什么想法吗? 谢谢


保罗·爱尔兰 http://paulirish.com/做了一个演示应用SVG 过滤器为 HTML 5 视频 http://paulirish.com/2010/svg-filters-on-html5-video/.

源代码为现场演示 http://paulirish.com/work/videooo.xhtml展示如何在过滤器之间切换。在这种情况下,所有 SVG 片段都会作为标签直接写入页面,而不是通过 JavaScript 动态插入。

尝试使用直接标签使其工作可能会有所帮助,然后在工作后切换到 JavaScript。可能存在一些奇怪的实现(错误),只有在动态创建时才会表现出来(/推测)。

此外,这可能取决于您使用的 Firefox 版本。我不确定哪个版本开始支持 SVG 过滤器,但 Paul 的帖子似乎表明它可能需要每晚构建。

祝你好运!

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Firefox 中的 SVG 过滤器 的相关文章

随机推荐