即使在我们的MacBook上也无法重现问题,但我们有一些用户的日志。问题是当我尝试在CanvasRenderingContext2D上使用一些渲染方法时,它崩溃了,因为它是空的。
所以我有canvas元素,是getContext方法但它返回null。 已检查电位的简短列表:
答案 0 :(得分:0)
我遇到了同样的问题。我不知道为什么会发生这种情况,即使我搜索了很多但我尝试了两件事他们解决了我的问题:
你可以:
使用元素后面的标记,在html中获取画布上下文的类型。即使你不使用它,也只是为了初始化。我知道这是非常丑陋和糟糕的非结构化代码,但它只是一种解决方法:(
var canvas = document.getElementById(' canvas');
canvas.getContext(' 2D&#39);
使用js动态创建画布并获取上下文:
var newCanvas = document.createElement(' canvas');
newCanvas.id =' canv';
canvasContainer.appendChild(newCanvas);
var c = newCanvas.getContext('2d'); // whatever type of context
答案 1 :(得分:0)
如果这与这里描述的情况相关,我确定,但我有类似的情况,我能够解决。也许这有助于有人下线。问题的关键在于浏览器处理HTML5画布的方式完全不同。特别是,他们愿意分配给画布总数和个别画布(高度,宽度和面积的约束)的内存量似乎不同。我从来不打算弄清楚细节,但是stack question解决了一些限制问题
对我来说,我正在制作许多独立的画布并分别管理他们的2D环境。问题是我不小心垃圾收集,我花了很长时间才注意到它,因为我在Chrome中测试了大部分内容,其中一切正常。
同时firefox中的行为是我的项目变得完全没有响应而没有丢失有意义的错误,并且在Safari中我可以使我的上下文很好,直到我用完总内存分配给画布,然后getContext('2d')
将返回{{1 }}。
我的第一个解决方案是降低画布的分辨率,但更好的解决方案是处理我当前没有使用的那些并动态生成它们。