为什么我的SVG贝塞尔曲线在Firefox中出现问题?

3
今天我遇到了一个问题,就是我使用 getPointAtLength 创建的图表在Firefox中无法工作。下面是显示此问题的示例:http://jsfiddle.net/xfpDA/9/。请注意javascript顶部的注释。这个SVG路径的相关部分是:C189.5,423.237,266.965,390.696,266.965,390.696。这在Chrome和IE中完美运行,但Firefox会直接跳过曲线并关闭路径。然而,对曲线进行微小的更改就足以解决问题:C189.5, 423.236, 266.965, 390.696, 266.965, 390.696 ^。为什么将该值改变千分之一就能让曲线漂亮而不是破碎的SVG呢?编辑:更改该坐标并不是唯一的“修复”问题的方法,因此似乎Firefox不能与高精度曲线值很好地配合使用。

1
很奇怪。我观察到任何在423.2369842529297和423.237014770507之间的值都会触发这种行为,如果这可以给出任何线索的话。 - Guffa
此外,我应该在主贴中加入这一点,您也可以更改其他一些坐标来“修复”问题。 - Brennan
1个回答

0

在某些情况下(例如delta=0/0),Firefox无法计算曲线的长度。因此,该路径部分的结果为NaN/0/undefined,因此不会添加到总长度中,getPointAtLength的域也较小。


太好了。我发现我的图表中的其他部分完全消失了,这是由于getTotalLength返回NaN导致的。我找到了一个与此问题相关的错误报告(https://bugzilla.mozilla.org/show_bug.cgi?id=972515),但无法找到关于这个特定问题的报告。 - Brennan

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接