1

我正在开发一个项目,该项目涉及具有可平移和可缩放的 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 行。

4

1 回答 1

0

Turns out it was a bug in d3 - see https://github.com/mbostock/d3/issues/1497 for details

于 2013-08-31T16:28:52.207 回答