上篇文章中介绍了Canvas表格的滚动实现,其滚动效果并非原来表格中平滑的滚动,而是间断式的滚动,即只有当scrollTop / scrollLeft为单元格高 / 宽的整数倍时才触发滚动,Google Excel和石墨文档表格均使用了这种滚动效果。

而开发Canvas表格的目的只是为了增强性能,而不希望影响原有的功能表现,所以尝试着改进了Canvas表格的滚动实现,去掉了特定的滚动触发条件,对滚动距离不为单元格尺寸的整数倍的情况做了优化,实现了平滑的滚动效果,但在测试中发现使用滚动条滚动时会发生表格错位的现象,而使用滚轮则表现正常,debug后排除了算法实现上的缺陷,而是因为Canvas绘图相关方法接受的参数为浮点数时的特定表现导致的(IE对于参数为浮点数的情况直接报错),见 Does canvas support floating point numbers when drawing line or arc?

而如果对传入的参数暴力取整会丢失精度,导致前后帧衔接不准确,目前还未找到有效的解决方案,故仍采用与Google Excel和石墨文档表格相同的滚动效果。