我遇到了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"-HC-310-1702-Ba-V-B1-SEG1"/>
</use>
当我点击使用元素时,我的问题就出现了,因为浏览器认为它们就像普通链接一样,所以当我点击按下cte ctrl键时,它会打开一个新标签。我想知道是否有任何方法可以避免浏览器的这种行为。
根据建议,命令preventDefault()和stopPropagation()似乎不起作用。
答案 0 :(得分:1)
找到一个修复,只需将可信的“return false”添加到根SVG元素即可 例如:
<svg ... onclick="return false;">...</svg>
将成功停止浏览器打开新选项卡或窗口。