【发布时间】:2011-09-28 18:54:20
【问题描述】:
由于某种原因,当我绘制如下图像时,iPad 上的 Safari 会抛出错误:
INDEX_SIZE_ERR:DOM Exception 1: Index or size was negative, or greater than the allowed value
var img = new Image;
img.src = node.data.userimg;
ctx.drawImage(img, 20, 20, 38, 38);
其中 node.data.userimg 是 twitter 个人资料图标的 URL。在普通桌面浏览器中不会引发此错误。最初这些 imgs 是在相对于节点对象的动态点绘制的,但即使将它们静态设置为 20、20 仍然会引发此错误。 iPad 的 Safari 能否在不引发此错误的情况下缩放图像?如果在大多数绘图调用上有点慢,图像似乎仍然正确绘制。我担心这可能只是一个性能问题,因为在画布上绘制了太多内容(点击/触摸时表示城市和相关推文的图表)。
【问题讨论】:
-
console.log(node.data.userimg);究竟值是多少?
-
我会尝试它,但我正在检查以确保它不为空或为空。否则,它会从 user_image 的 twitter JSON 结果中提取。
-
图片可能没有在 iPad 上完成加载。你可以将 drawImage 包装在 onload 事件中吗?
-
这听起来像是一个可能的答案,因为性能非常缓慢,因为所有数据都被绘制。我可能还想确保在下一次绘图调用时停止加载,否则我将建立一个绘图命令队列。此外,在 draw 命令之外声明图像可能会有所帮助。