OffscreenCanvas 在移动端怎么用才不报错?
我在做一个移动端的 Canvas 动画,想用 OffscreenCanvas 提升性能。本地开发时在 PC Chrome 上跑得好好的,结果一到手机 Safari 或微信浏览器就直接报错,说 OffscreenCanvas is not defined。
查了下兼容性,好像 iOS 支持不太好?但我看到有些大厂的 H5 项目确实在用。我试过加了 transferControlToOffscreen() 的判断,但还是不行。这是我的初始化代码:
const canvas = document.getElementById('myCanvas');
if (typeof OffscreenCanvas !== 'undefined') {
const offscreen = canvas.transferControlToOffscreen();
// 后续用 worker 处理绘制
}
到底该怎么写才能在主流移动设备上安全使用啊?是不是得降级回普通 Canvas?
首先得检查当前环境是否支持,不是简单 typeof OffscreenCanvas 就完事了。你可以这样写:
这样更清晰,把异常情况都考虑进去了。其实很多大厂项目也是这么干的,遇到不支持就优雅降级。
另外有个小技巧,如果动画性能要求不高,可以考虑用 requestAnimationFrame 加一些简单的优化,完全可以用普通 Canvas 搞定,别跟自己过不去。
总之移动端兼容性就是个坑,能简单解决就别搞复杂了,代码量和维护成本都要考虑进去。