我正在使用 RaphaelJS 调试 IE8 中的一些性能问题。我们在 raphael 中从大约 1000 个元素和文本节点构建图表,特别是一个图表在渲染时给我们带来了问题。在 IE9 中需要 2-7 秒,具体取决于机器来渲染,而在 IE8 中需要 1 分钟以上。
您可以在此处查看相关网站。这是第三张图(点击它)。
本质上,我们为每个数据点创建元素并将它们绘制在拉斐尔画布上。
我使用了 IE Developer Tools 分析器并确定它是setFillAndStroke()
从两者调用的函数,attr()
以及text()
当我们更改元素的填充、描边、样式和其他一些设置时。getBoundingRect()
函数是setFillAndStroke()
罪魁祸首。
在我的研究中,我遇到过一些人对 IE8 有问题attr()
,text()
例如,
所以有几个问题:
- 您可以为 Raphael 元素设置“默认”填充和描边,以便使用该填充和描边创建它们吗?这应该删除对
getClientBoundingRect()
. 我试过在文档中寻找这样的功能,但没有运气。 - 这是我们可以在不改变图表外观的情况下解决的问题吗?
- 如果这是我们可以通过代码完成的事情,是否可以在不修改 RaphaelJS 的情况下这样做?
- 还有其他想法吗?
在旧版本的 Raphael 中似乎有人遇到了类似的问题,显然已在 2.0.0 中修复,但我们使用的是 2.0.2 版本(测试在 2.1.0 中也有同样的问题)。