javascript - SVG 路径 HitTest

标签 javascript jquery svg mouseover jquery-svg

我在检测 SVG 路径元素上的鼠标悬停事件时遇到问题。看起来路径元素的描边宽度越小,我检测鼠标悬停的成功率就越低。

此外,我正在使用 jquery-svg 插件来进行绘图。

下面是尝试在路径元素上使用 jquery mouseover 事件进行检测的 fiddle 。 Mouseover Fiddle

下面是尝试通过将 mousemove 监听器附加到 svg,然后使用 document.getElementFromPoint 进行检测的 fiddle 。 getElementFromPoint Fiddle

这些似乎都不能可靠地工作,尤其是在鼠标快速移动的情况下。是否可以提高其中任何一个的灵敏度以更好地检测鼠标悬停?或者也许有更好的方法来做到这一点?

最佳答案

根据浏览器的工作方式,您不会连续收到 mouseover 事件,但每次操作系统更新光标位置时都会收到一个事件。如果鼠标快速移动,您将收到相隔几个像素的事件。鼠标不会在文档上滑动,而是跳跃Here's a jsfiddle显示每个事件发生的位置。您无法执行任何操作来获取光标两个连续位置之间的所有元素的 mouseover 事件。

您可以做一些不同的事情:记住 mousemove 事件的先前位置,计算该点与当前鼠标位置之间的线,并计算该线与所有其他形状之间的所有交点在文件中。但这会占用大量资源,因为没有可用的 API,您必须自己计算交集。有一个library这可以帮助你。

关于javascript - SVG 路径 HitTest ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12202424/

相关文章:

javascript - 如何使用 JavaScript 更新兄弟复选框?

javascript - MongoDB 第一次不会返回正确的数据

javascript - 如何将 SVG 图像动态插入到 HTML 中?

javascript - 从子序列中寻找超序列的多数合并算法的实现?

javascript - 验证节点请求正文参数类型

javascript - 使用 mapDispatchToProps 避免 no-shadow eslint 错误

javascript - 如何使用 xpath 克隆 SVG map

javascript - 将动态创建的对象传递给函数

javascript - 每次将元素添加到 SVG 时播放音频剪辑 - d3.js

svg - svg 中模糊圆圈的错误渲染