即使在我们的 MacBook 上,我也无法重现问题本身,但是我们有一些用户的日志。问题出在当我尝试在 CanvasRenderingContext2D 上使用某些渲染方法时,它会崩溃,因为它是 null。
所以我有画布元素,它有 getContext 方法,但它返回 null。 已经检查过的潜在问题简单列表:
- 画布元素已被创建、存在,并具有正面的大小和 getContext 方法
- 在页面加载后执行了 getContext 调用(onload 监听器)
- 没有使用其他参数调用 getContext(例如 'webGl')
- 在 getContext('2d') 中,'2d' 字符串始终小写
- 此问题仅在 Safari 10 上重现
- 在某些情况下,此错误不是在页面加载后立即发生,而是在一些用户操作之后发生。这意味着画布已被销毁并重新创建了一些时间,并且它可以工作。