如何阻止浏览器使用JavaScript打开新的选项卡/窗口?

时间:2012-04-20 14:24:14

标签: javascript firefox svg mousedown

我遇到了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>

当我点击使用元素时,我的问题就出现了,因为浏览器认为它们就像普通链接一样,所以当我点击按下cte ctrl键时,它会打开一个新标签。我想知道是否有任何方法可以避免浏览器的这种行为。

根据建议,命令preventDefault()和stopPropagation()似乎不起作用。

1 个答案:

答案 0 :(得分:1)

找到一个修复,只需将可信的“return false”添加到根SVG元素即可 例如:

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

将成功停止浏览器打开新选项卡或窗口。