我有一个包含多个路径的SVG文件,它被嵌入到HTML页面中使用object
标签。JavaScript用于为每个路径提供交互功能 - 当单击路径时,将显示一个工具提示rect
。这是它的样子:
我希望当有人点击与工具提示相关联的路径之外的区域时,工具提示会消失。为此,需要为每个路径添加此类事件监听器:
path.addEventListener("click", function(event){
if (!isTipShown()){
createTooltip()
}
else{
hideTooltip()
}
})
isTipShown
, createTooltip
和hideTooltip
是用于检查SVG DOM并相应地修改它的函数。
这个方法可以正常工作,但如果点击发生在路径本身之间的空白空间中,则会失败-因为没有对象来捕获它。
有哪些实现此功能的方法?
我的现有想法:
- 创建一个覆盖整个视口的透明矩形,并将其用作点击目标。如何确保矩形到达所有底部?
- 为整个HTML文档创建一个点击处理程序会起到作用,但仅当用户在视口本身外单击时。