如果通过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%准确(仅识别星星本身的点击,而不识别其边界矩形的透明部分等)