SVG <use>元素不在Firefox中继承事件处理程序?</use>

时间:2014-07-14 01:36:56

标签: javascript html firefox svg

编辑:这是Firefox中的一个错误,如果不直接编辑Firefox就无法解决,我不想这样做。我认为这个问题的解决是为了向其他人询问他。

我正在尝试使用SVG创建基于像素的绘图程序。我在<polygon>内的几个<defs>上初始化事件处理程序,然后用<use> s复制那些以制作画布,并且它工作正常,在铬。

但无论我是分配.onclick属性还是使用.addEventListener,我的<use>都不会在Firefox中注册任何内容。在我为此研究解决方案时,我发现了另一个主题,也可能是技术上相关的现象:使用<use>复制的.cloneNode也不保留事件监听器。我生成它们时,可以为每个<use>元素分配事件监听器,但在我看来,这是最不理想的解决方案。

1 个答案:

答案 0 :(得分:0)

我想出的唯一解决方案是在use元素上注册相同的事件监听器。之后它可以在Firefox中运行,但不再适用于IE,Safari和Chrome,因为事件会被触发两次。因此,您必须取消注册复制的SVG元素的事件。这是一种解决方法,但没有好的解决方案。我希望其他人可以为此提供更好的答案。