私は積極的に(そして何時間も)ウェブでこれに対する答えを検索しましたが、あえて尋ねると見つけることができませんでした. JSでプログラミングしてSVGを作成するためのライブラリであるRaphael.jsを使用しています。リンクに図形を埋め込みたい。
SVG では、名前空間が SVG タグに追加され、xlink の使用を通知します。
xmlns:xlink="http://www.w3.org/1999/xlink"
次に、たとえば、リンクに埋め込まれた形状を作成することができます (この優れたブログ tutorials.jenkov.com/svg/a-element.html ):
<!DOCTYPE html><html><head><meta charset="UTF-8"></head><body>
<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
<a xlink:href="/svg/index.html" target="_top">
<rect x="10" y="20" width="75" height="30" style="stroke: #333366; fill: #6666cc"/>
</a>
</svg>
</body></html>
ここにフィドルがあります:小さな長方形
Raphael ライブラリ (および私の例では jquery) を使用すると、コードは次のようになります。
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Title of the document</title>
<script src="jquery.js"></script>
<script src="raphael.js"></script>
</head>
<body>
<div id="my-canvas"></div>
</body>
<script type="text/javascript">
var jq = jQuery.noConflict();
var paper = Raphael('my-canvas', 500, 300);
jq('svg').attr('xmlns:xlink', 'http://www.w3.org/1999/xlink');
var rec = paper.rect(10, 20, 75, 30);
rec.attr('fill', '#6666cc');
rec.attr('stroke', '#333366');
var l = jq('<a xlink:href="#"></a>');
jq(rec.node).wrap(l);
</script>
</html>
そして、ここにフィドルがあります:ここを見てください
問題は、それが機能しないことです。このコードは次の行まで実行されました。
rec.attr('stroke', '#333366');
完全に描画された形状を表示しますが、その後...消去されます。もう 1 つの興味深い点は、コード全体の実行後、つまり 2 行後に DOM ドキュメントが希望どおりであることを Firefox が示していることです (これは、私の評判では明らかに十分ではありません...)。しかし、簡単に再現できます。つまり、DOM ノードではっきりと確認できます。
<a xlink:href="/svg/index.html" target="_top">
<rect x="10" y="20" width="75" height="30" style="stroke: #333366; fill: #6666cc"></rect>
</a>
誰かが私の過ちを教えてくれたら嬉しいです。
どうもありがとう