SVGベースの視覚化でSVGマーカー要素を使用しようとしているときに問題が発生しました。私はWebアプリケーションに自分の変更を追加しています。これは、CSSファイルやJavaScriptファイルなどの参照が相対的なものになるように、すべてのページにベースタグを含めることになります。SVGマーカー要素を含むページでベースタグを使用するとマーカーのレンダリングに失敗する
私はこの問題を再現するいくつかのサンプルコードを用意しています。線要素とマーカー要素が定義されています。 marker要素は、マーカーのuriとidを介して、その 'marker-end'属性の行によって参照されます。ベースタグがなければ、矢印は正常に表示されます。ベースタグは表示されません。理由は、ベースタグがブラウザのURLを解決する方法を変更するためです。ラインのマーカー終了属性で指定された単純な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>
基本的な要素を使って再考することができます。何年も前、私はあまり書かれていないクローラに問題があり、私のサイトを通過して何千もの404を生成しました。 – cimmanon
AngularJSユーザーが苦痛の一日を救うためにここに残しておきます:https://github.com/angular/angular.js/issues/8934#issuecomment-56568466 – Bungle