SVG ベースのビジュアライゼーションで SVG マーカー要素を使用しようとしているときに問題が発生しました。CSS ファイル、JavaScript ファイルなどへの参照が相対的になるように、たまたますべてのページに base タグが含まれている Web アプリケーションに変更を追加しています。
問題を再現するサンプルコードを以下に示します。line 要素と、marker 要素が定義されています。マーカー要素は、マーカーの uri と id を介して、その 'marker-end' 属性の行によって参照されます。base タグがない場合、矢印は問題なく表示されます。base タグでは表示されません。その理由は、base タグがブラウザーが URL を解決する方法を変更するためです。行の marker-end 属性で指定された単純な ID ベースの URL であっても。
ベースタグを削除せずにこの問題を回避する方法はありますか?
私が取り組んでいる製品にはかなり根付いているため、実際には削除できません。Web アプリケーションで 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>