Javascript 为什么我的SVG贝塞尔曲线在Firefox中被破坏?
今天我遇到了一个问题,当通过Javascript 为什么我的SVG贝塞尔曲线在Firefox中被破坏?,javascript,html,firefox,svg,Javascript,Html,Firefox,Svg,今天我遇到了一个问题,当通过getPointAtLength创建图表时,我创建的图表在Firefox中不起作用。下面是一把小提琴,它显示了这个问题: C189.5,423.236,266.965,390.696,266.965,390.696 ^ 注意javascript顶部的注释 SVG路径的相关部分是: C189.5,423.237,266.965,390.696,266.965,390.696 C189.5423.237266.965390.696266.965
getPointAtLength
创建图表时,我创建的图表在Firefox中不起作用。下面是一把小提琴,它显示了这个问题:
C189.5,423.236,266.965,390.696,266.965,390.696
^
注意javascript顶部的注释
SVG路径的相关部分是:
C189.5,423.237,266.965,390.696,266.965,390.696
C189.5423.237266.965390.696266.965390.696
这在Chrome和IE中非常有效,但是Firefox跳过了这条曲线,只是关闭了路径
但是,曲线的微小变化足以解决问题:
C189.5,423.236,266.965,390.696,266.965,390.696
^
C189.5423.236266.965390.696266.965390.696
^
为什么将该值更改千分之一会导致漂亮曲线和破损SVG之间的差异
编辑:该坐标不是唯一可以更改以“修复”问题的坐标,因此Firefox似乎无法很好地处理高精度曲线值。Firefox在某些情况下(例如,delta=0/0)无法计算曲线的长度。因此,该路径部分的结果为NaN/0/undefined,因此不会添加到总长度中,getPointAtLength的域更小。这很奇怪。我观察到423.2369842529297和423.237014770507之间的任何值都会触发该行为,如果这能给出任何原因的线索的话。此外,我应该在主要帖子中包括这一点,你也可以更改一些其他坐标来“修复”该问题。太好了。由于
getTotalLength
返回NaN
,我已经看到我的图表的一些其他部分完全消失了。我发现了一个与该问题()相关的bug报告,但找不到关于该特定问题的bug报告。