Html 错误后重置画布

Html 错误后重置画布,html,canvas,error-handling,Html,Canvas,Error Handling,我在嵌入式设备上基于WebKit的浏览器中看到了以下行为:在绘制画布时出错(我还不确定错误的性质,但有时看起来好像由于绘制速度太慢而无法绘制),画布本身就过时了。也就是说,不再有绘图命令会影响图像(错误在JavaScript代码中捕获) 目前,我无法修复错误-如何使画布刷新,如在“绘制错误后恢复”中一样?您可以尝试使用以下方法强制重新初始化: try { //to catch the error you recevie } catch(err) { var tempHeight =

我在嵌入式设备上基于WebKit的浏览器中看到了以下行为:在绘制画布时出错(我还不确定错误的性质,但有时看起来好像由于绘制速度太慢而无法绘制),画布本身就过时了。也就是说,不再有绘图命令会影响图像(错误在JavaScript代码中捕获)


目前,我无法修复错误-如何使画布刷新,如在“绘制错误后恢复”中一样?

您可以尝试使用以下方法强制重新初始化:

try {

//to catch the error you recevie
} catch(err) {

    var tempHeight = canvas.height;
    canvas.height = 0;
    canvas.height = tempHeight;
}
(有人会说只需设置
canvas.height=canvas.height
(或width),但这并不适用于所有浏览器)

另一种方法是分离画布元素本身,创建一个新元素,并使用
attachChild
将其附加到原始父元素


但是,这些都是黑客攻击,希望您看到的bug能在下次更新中被删除。

如果您不发布“被JavaScript代码捕获”的错误,我们该如何帮助您?@Saturnix错误与此无关。真的可以是任何东西。重要的是画布变得陈旧/不再受绘图/擦除的影响。事实并非如此-JS错误将中断您在画布上绘图的可能性。@Saturnix抱歉,我可能没有解释清楚:在使用
drawImage
时,有一些错误与无法将图像放入画布有关-但这并不重要,因为1)我现在无法修复它,2)我需要处理错误的不幸副作用,而不是错误本身(即画布暂停,对
context.drawImage
的调用不再导致画布更新,即使它们不再导致错误。)我第三次告诉您,您看到的错误正在导致画布崩溃。无论您在之后做什么,如果drawImage导致错误,您将无法更新画布,并且很可能根本无法执行JavaScript。当您尝试访问图像中不可能的位置时,drawImage通常会崩溃:访问错误的索引n数组将导致脚本崩溃。如何恢复它?不能。避免调用不存在的数组索引,您将得到解决。很遗憾,到目前为止,只创建一个新的canvas元素是有效的:(但感谢您提供更多建议!)!