2012-04-20 155 views
1

我在使用JavaScript和SVG時遇到問題。當我按下CTRL(或ALT)鍵在SVG元素上執行mouseDown事件時,瀏覽器(Firefox)會打開一個新的標籤頁/窗口。我只想調用一個函數來操縱我的SVG文檔,而不需要打開任何新的標籤或窗口。我不關心瀏覽器的屬性。我一直在處理我的另一個代碼,即使在相同條件下點擊SVG元素時也沒有任何反應,但這是一個遺留代碼,它有超過9000行,而且我無法確定瀏覽器的行爲原因不同。如何防止瀏覽器使用JavaScript打開新的選項卡/窗口?

所以,我想知道是否有任何SVG文件的屬性可以設置,以避免新的標籤/窗口。

實際上,我確實意識到這個問題是關於xlink的svg。我定義爲一個符號

<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()似乎不起作用。

+1

請發佈您的JavaScript代碼的示例,以及您到目前爲止所嘗試的內容 – Curt 2012-04-20 14:25:49

+1

我想你是以鏈接的形式做它們,當你不想將它們當做鏈接而是隻是點擊動作? – 2012-04-20 14:26:52

+2

它超過9000! – 2012-04-20 14:29:26

回答

1

找到了一個修復方法,只是簡單地向根SVG元素添加可信「返回false」。
例如:

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

將成功地阻止瀏覽器中打開一個新的標籤或窗口。

+0

它的工作原理。謝謝。 – user658832 2012-06-05 14:24:39

相關問題