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