离屏画布:contextlost 事件

有限可用性

此功能并非基线功能,因为它在一些最广泛使用的浏览器中无法正常工作。

如果浏览器检测到 OffscreenCanvasRenderingContext2D 上下文已丢失,则会触发 OffscreenCanvas 接口的 contextlost 事件。上下文丢失可能由多种原因导致,例如关联的 GPU 驱动程序崩溃或应用程序内存不足等。

默认情况下,用户代理会尝试恢复上下文,然后触发 contextrestored 事件。用户代码可以通过在事件处理期间调用 Event.preventDefault() 来阻止上下文恢复。

语法

在诸如 addEventListener() 之类的方法中使用事件名称,或设置事件处理程序属性。

js
addEventListener("contextlost", (event) => {});

oncontextlost = (event) => {};

事件类型

一个通用的 Event

示例

下面的代码片段检测 contextlost 事件。

js
const canvas = new OffscreenCanvas(256, 256);
const gl = offscreen.getContext("2d");

// Do drawing etc

canvas.addEventListener("contextlost", (event) => {
  console.log(event);
});

为了防止上下文恢复,事件处理程序代码可能如下所示

js
canvas.addEventListener("contextlost", (event) => {
  event.preventDefault();
});

规范

规范
HTML 标准
# event-contextlost
HTML 标准
# handler-offscreencanvas-oncontextlost

浏览器兼容性

BCD 表格仅在启用了 JavaScript 的浏览器中加载。

另请参阅