2014-07-14 17 views
0

編輯:這是一個Firefox中的錯誤,無法直接編輯Firefox而無法解決,這是我不想做的。我認爲這個問題是爲了向其他人詢問他而解決的。SVG <use>元素不繼承Firefox中的事件處理程序?

我想用SVG創建一個基於像素的繪圖程序。我在<defs>的內部初始化了一些<polygon> s的事件處理程序,然後用<use>s複製了很多次以製作畫布,並且它在Chrome中正常工作。

但無論我是否指定.onclick屬性或使用.addEventListener,我的<use>都不會在Firefox中註冊任何內容。當我爲此研究解決方案時,發現另一個主題上,可能還有技術上的相關現象:使用.cloneNode複製的<use>也不保留事件偵聽器。我可能爲我的每個<use>元素分配事件偵聽器,但在我看來,這是最不理想的解決方案。

+0

我不確定這是[bug 265895](https://bugzilla.mozilla.org/show_bug.cgi?id=265895)還是[bug 575470](https://bugzilla.mozilla.org/show_bug的CGI?ID = 575470)。您唯一的選擇是下載Firefox的源代碼並修復錯誤或支付其他人這樣做。 –

+0

@RobertLongson我害怕那樣。我想我只會使用次優解決方案。 – stellatedHexahedron

回答

0

我想出的唯一解決方案是在use元素上註冊相同的事件監聽器。之後,它在Firefox中起作用,但在IE,Safari和Chrome中不再有效,因爲事件被激發了兩次。因此,您必須註銷複製的SVG元素的事件。這是一種解決方法,但沒有好的解決方案。我希望別人能給出更好的答案。

相關問題