我正在开发一个项目,该项目涉及一个pannable和zoomable d3.js图。我的工作基本上没问题,但是我发现了一个问题:
在iPad上测试时,我发现有些手势会导致d3错误 -
最新d3.js(不是.min版本)中的TypeError: 'undefined' is not an object
,第1264行(似乎是function moved()
的开头......
当缩放事件部分地在图形外部开始时似乎发生 - 例如一个手指放在图形上,一个放在外面,然后缩放。可能需要在不同的地方尝试一些;我无法找到触发它的确切方法。
我复制了项目并将其剪切成一个基本示例,该示例可在 ---不再可用--- 中找到。
安装了Waterbug,因此在iPad上进行测试时(可能还有其他支持旋转的东西),向右旋转时会出现错误日志控制台。
这看起来像是d3或我的代码中的错误吗?
我已经将问题缩小到触摸事件,该事件在图表中开始,但随后延伸到外部。因此,如果您用一根手指平移图形,然后决定放大,但将第二根手指放在图形之外,则会发生错误。如果第二根手指也在图表内,则没有问题。
看来http://bl.ocks.org/mbostock/3892919的示例也遭受同样的使用 - 请参阅 ---不再可用--- 使用提供的代码,加上我已经包含了Waterbug所以将设备向右旋转(从垂直方向)将显示控制台。
问题似乎与moved()
函数 - v3.2.8中的第1264行和v3.3.2中的第1387行有关。