在创建一个基于SVG的可视化时,我遇到了使用SVG标记元素的问题。我的更改是添加到一个包含每个页面的基本标签的Web应用程序中的,以便任何对CSS文件、JavaScript文件等的引用都可以是相对路径。
下面有一些示例代码来重现该问题。有一个线条元素和一个定义好的标记元素。通过uri和标记的id,在线条的“marker-end”属性中引用标记元素。没有基本标签,箭头正常显示。但有了基本标签,则不会显示箭头。原因是基本标签改变了浏览器解析URL的方式,即使是在线条的“marker-end”属性中使用简单的基于ID的URL。
是否有任何方法可以解决这个问题而不必删除基本标签?
因为我正在处理的产品中使用基本标签的频率相当高,所以我不能真正地将其删除。我需要支持Firefox、Chrome和IE9+的Web应用程序,Firefox和Chrome都出现了这个问题,而IE则没有问题(即箭头标记显示正常)。
<html>
<head>
<base href=".">
<style>
.link { stroke: #999; stroke-opacity: .6; }
marker#arrow { fill: black; }
</style>
</head>
<body>
<svg width="100%" height="100%">
<defs>
<marker id="arrow" viewBox="0 -5 10 10" refX="0" refY="0" markerWidth="20" markerHeight="20" orient="auto">
<path d="M0,-5L10,0L0,5"></path>
</marker>
</defs>
<line x1="100" y1="100" x2="333" y2="333" marker-start="url(#arrow)" class="link"></line>
</svg>
</body>
</html>