我在尝试在基于 SVG 的可视化中使用 SVG 标记元素时遇到了问题。我正在将我的更改添加到一个 Web 应用程序中,该应用程序恰好在每个页面上都包含一个基本标记,因此对 CSS 文件、javascript 文件等的任何引用都可以是相对的。
我在下面有一些示例代码可以重现该问题。定义了一个线元素和一个标记元素。标记元素通过标记的 uri 和 id 由其“标记结束”属性中的行引用。没有基本标签,箭头显示正常。对于基本标签,它不显示。原因是因为 base 标签改变了浏览器解析 url 的方式。即使对于在行的 marker-end 属性中指定的简单的基于 id 的 url。
有什么办法可以解决这个问题而不必删除基本标签?
我无法真正删除它,因为它的使用在我正在开发的产品中已经根深蒂固。我的 webapp 需要支持 Firefox、Chrome 和 IE9+。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>