首页 > 解决方案 > Firefox 是否支持 SVG getIntersectionList?文档和测试不同意

问题描述

我正在为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/interactivity/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 的更新文档说它已被添加?

标签: javascriptfirefoxsvgmozilla

解决方案


不,正如 Robert Longson 评论的那样,第一个 svg 示例也失败了 getIntersectionList 并且 Firefox 不支持它。

第一个示例失败: http://dahlström.net/svg/interactivity/intersection/sandbox_hover.svg

我很困惑,因为演示应用程序报告了鼠标经过的正确路径——但这取决于处理 mousemove 事件,而不是由于 getIntersectionList。

我只阅读了 getIntersectionList... 周围的代码,并没有使用调试器。

仍然有点奇怪 - 因为 mousemove 事件在 SVG hittest 中有一个非常好的点,但我无法使用坐标访问相同的测试。看起来我需要为 SVG 多边形进行自己的碰撞测试。


推荐阅读