编辑:这是Firefox中的一个错误,如果不直接编辑Firefox就无法解决,我不想这样做。我认为这个问题的解决是为了向其他人询问他。
我正在尝试使用SVG创建基于像素的绘图程序。我在<polygon>
内的几个<defs>
上初始化事件处理程序,然后用<use>
s复制那些以制作画布,并且它工作正常,在铬。
但无论我是分配.onclick
属性还是使用.addEventListener
,我的<use>
都不会在Firefox中注册任何内容。在我为此研究解决方案时,我发现了另一个主题,也可能是技术上相关的现象:使用<use>
复制的.cloneNode
也不保留事件监听器。我生成它们时,可以为每个<use>
元素分配事件监听器,但在我看来,这是最不理想的解决方案。
答案 0 :(得分:0)
我想出的唯一解决方案是在use元素上注册相同的事件监听器。之后它可以在Firefox中运行,但不再适用于IE,Safari和Chrome,因为事件会被触发两次。因此,您必须取消注册复制的SVG元素的事件。这是一种解决方法,但没有好的解决方案。我希望其他人可以为此提供更好的答案。