我正在为javascript中的大量SVG路径寻找一个简单的多边形点测试。getIntersectionList似乎是一个正确的功能,但在过去10年里,我看到的每一个地方都有讨论,说它在mozilla/firefox中不受支持,包括mozilla.org文档:
https://developer.mozilla.org/en-US/docs/Web/SVG/SVG_1.1_Support_in_Firefox
然而,我发现示例代码似乎工作正常,并支持getIntersectionList:
http://dahlström.net/svg/interactivey/intersection/sandbox_hover.svg
var list = root.getIntersectionList(rpos, null);
// Works
相比之下,另一个失败并表示不支持相同功能的例子是:
https://codepen.io/team/articulate/pen/HIFyi
input.value = svg.getIntersectionList(irect, null).length
// Uncaught TypeError: svg.getIntersectionList is not a function
我想让它在所有现代浏览器中都能工作——所以奇怪的是,mozilla似乎说它不受支持,而实际上它有时确实能工作。有没有来自mozilla的更新文档表明它已经被添加?
否。正如Robert Longson所评论的,第一个svg示例也失败了getIntersectionListFirefox不支持它。
第一个示例失败:http://dahlström.net/svg/interactivey/intersection/sandbox_hover.svg
我很困惑,因为演示应用程序报告了鼠标经过的正确路径,但这是因为处理了mousemove事件,而不是因为getIntersectionList。
我只读过关于getIntersectionList的代码。。。并且未使用调试器。
仍然有点奇怪,因为mousemove事件在SVG hitest中有一个非常好的点,但我不能用坐标访问同一个测试。看起来我需要对SVG多边形进行自己的碰撞测试。