单击通过“use”标记包含的SVG元素在FF中未触发的事件

时间:2017-11-20 09:09:47

标签: javascript html events svg click

如果通过use的{​​{1}}标记包含该元素,则不会在Firefox中触发SVG元素上的点击事件。

最好用一个实例解释:

defs
const paths = document.querySelectorAll('path');
const toggleColor = (event) => {
	let path = event.currentTarget;
	path.setAttribute('fill', ('lightblue' === path.getAttribute('fill')) ? '#FFDC00' : 'lightblue');
}

paths.forEach(path => { path.addEventListener('click', toggleColor); });
.wrapper {
  display: inline-block;
  width: 200px;
  padding: 8px;
  margin: 8px;
  box-shadow: 0 0 2px 2px lightgrey;
}

svg {
  margin: 16px 40px;
}

path {
  cursor: pointer;
}

我想这与SVG USE element and :hover style有关。

此行为是否符合规范,是否可以可靠地在这些项目上安装点击事件?

处理整个SVG上的点击事件并手动检查坐标实际上并不是一个选项,因为实际上很难实现100%准确(仅识别星星本身的点击,而不识别其边界矩形的透明部分等)

0 个答案:

没有答案