2015-09-25 98 views
2

我在一个单独的文件中定义了一些SVG过滤器和标记,以用于我的主要SVG内容。外部定义的SVG标记和过滤器不能在Chrome中工作

这里是从文件(dependencies.svg)样品:

<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" version="1.1"> 
    <filter id="grayscale"> 
     <feColorMatrix type="matrix" values="0.6666 0.3333 0.3333 0 0 0.3333 0.6666 0.3333 0 0 0.3333 0.3333 0.6666 0 0 0 0 0 1 0"></feColorMatrix> 
    </filter> 

    <marker id="Output" viewBox="0 -6 12 11" refX="10" markerHeight="8" markerWidth="8" orient="auto"> 
     <path d="M0,-5L10,0L0,5L0,-5" stroke-width="1px" markerWidth="8" markerHeight="8" stroke="#696969" style="fill: rgb(105, 105, 105);"></path> 
    </marker> 

在Firefox以下作品时施加到行:

marker-end: url("/path/to/dependencies.svg#Output"); 

然而,它没有在Chrome工作或歌剧。

当我尝试将滤镜应用于元素(如<rect>元素)时也是如此。

奇怪的是,我可以看到我的dependencies.svg文件在两种情况下都加载(firefox和webkit),但是webkit什么也不做。

我已经测试了这两个属性作为style属性和filtermarker-end属性的一部分。在所有情况下,Firefox都可以工作,Webkit不会。

这是Webkit的一个已知缺陷还是我错过了一些真正明显的东西?

编辑:我想这可能是一个闪烁问题(我一直在说的Webkit,老习惯)

+0

(确认)尝试过几个简单的测试用例,对我来说它也像是一个Blink bug。但与你不同的是,我无法确认在Chrome中由'marker-end'启动的依赖关系请求是否真的被发送;我可以在使用''元素时看到它们,实际上按预期工作。 – myf

+0

感谢您的确认。 – Tsarbomb

回答

2

显然你是对与“WebKit的”措辞习惯:这是从2010年的WebKit错误: References to markers in external SVG documents not applied。据说它使它闪烁不定。

最近发布的2012年的WebKit SVG错误:Make external URL references work,也打开。

当前2012年的Blink错误:SVG (filter | fill | stroke | clip-path | mask | marker-*) from external files not applied显示活动,因此它可能会在2018年(手指交叉)修复。

+0

是的,我打开了一个铬项目的门票,它合并成了一个Blink门票,自2012年以来我一直在打开门票......哦。 – Tsarbomb

+0

很酷。为了文档目的,在描述中添加了该问题。看到当今几乎古老的SVG标准如此尴尬的采用让我感到悲伤。 – myf

相关问题