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>

当我单击使用元素时会出现我的问题,导致浏览器将它们视为普通链接,因此当我按下 hte ctrl 键单击时,它会打开一个新选项卡。我想知道是否有任何方法可以避免浏览器的这种行为。

正如建议的那样,命令 preventDefault() 和 stopPropagation() 似乎不起作用。

4

1 回答 1

1

找到了一个简单的修复方法,就是将可信的“return false”添加到根 SVG 元素。
例如:

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

将成功停止浏览器打开新标签页或窗口。

于 2012-06-05T09:12:22.437 回答