1

JavaScript と SVG に問題があります。CTRL (または ALT) キーを押した状態で SVG 要素に対して mouseDown イベントを実行すると、ブラウザー (Firefox) が新しいタブ/ウィンドウを開きます。新しいタブやウィンドウを開かずに、単純に関数を呼び出して SVG ドキュメントを操作したいと考えています。ブラウザのプロパティは気にしません。私は自分の別のコードを扱っていて、同じ条件下で SVG 要素をクリックしても何も起こりませんが、これは 9000 行を超えるレガシー コードであり、ブラウザーが動作する理由を特定できません。違う。

したがって、新しいタブ/ウィンドウを回避するために設定できる SVG ドキュメントのプロパティがあるかどうかを知りたいです。

実は、この問題は svg の hte xlink に関するものであることに気付きました。シンボルとして定義されたアイテムがいくつかあります

<symbol id="TANQs">
     <path d="m 97,42 a74,74 0 0,0 -94,0" />
     <rect x="3" y="42" width="94" height="26" />
</symbol>

上記の例のように、要素も使用しています。

<use id="TQ-43120" x="100" y="200" **xlink:href="#TANQs"** onmouseover="mouseOver(evt)" onmouseout="mouseOut(evt)" oculto="false">
      <lasca:segmento tag="2&quot;-HC-310-1702-Ba-V-B1-SEG1"/>
</use>

私の問題は、使用要素をクリックすると発生します。ブラウザーはそれらを通常のリンクと見なすため、ctrl キーを押したままクリックすると、新しいタブが開きます。ブラウザのこの動作を回避する方法があるかどうか知りたいです。

示唆されているように、コマンド preventDefault() および stopPropagation() は機能していないようです。

4

1 に答える 1

1

信頼できる「return false」をルート SVG 要素に追加するだけの修正が見つかりました。
例えば:

<svg ... onclick="return false;">...</svg>

ブラウザが新しいタブまたはウィンドウを開くのを正常に停止します。

于 2012-06-05T09:12:22.437 に答える