跳到主要内容

Chromium-Gecko-WebKit差异清单

版本数字会过期。下表记的是 机制差异,落地以当前目标浏览器实测为准。探测方法见 OffscreenCanvas 与引擎差异

1. 表面与 hint

能力ChromiumGeckoWebKit
willReadFrequently 倾向软件光栅明显读回仍贵,路径不一定同等读回贵
desynchronized常可用,仍要读 attributes保守保守
colorSpace: display-p3支持则 attributes 能读回跟版本Safari 有,WebView 不一定
transferControlToOffscreen + 2d Worker成熟可用但边角多到得晚,失败要降级主线程
Worker requestAnimationFrame跟文档 vsync同;不可用时黑屏

共同:已经 getContext 的 canvas 不能 transfer。这不是引擎差异,是规范。

2. 文字与路径

项目差异
actualBoundingBox*对 ink 计算不一致,命中盒不要跨引擎像素级对拍
系统字体 fallback中英混排 width 不能当快照金标
roundRect / letterSpacing / fontKerning进入 2D 的时间不同,赋值后读回检测
Path2D.addPath + matrix大体可用;极端 scale 下命中误差
filter能跑不等于能实时;Safari 大 blur 更易卡

3. 输入与布局

项目差异
device-pixel-content-boxChromium 先;Safari 要 try/catch 回退
offsetX 在 CSS transform 下全不可靠,统一 client + bounding rect
getCoalescedEvents笔设备上 Chromium 最完整
ctrl+wheel pinch桌面 Chromium 常见;Firefox 行为不同,都要测
iOS visualViewport键盘顶起改变高度,只听 window.resize 会漏

4. 导出与媒体

项目差异
toBlob image/webp探测 isTypeSupported / 试编码
MediaRecorder + captureStreamSafari mime 集合窄,vp9 常不行
requestVideoFrameCallback以 CanIUse/当前版本为准,无则 rAF 降级
JPEG 透明底色引擎填黑或白,不要依赖

5. 内存

iOS / iPadOS 对 backing store 最狠。多层 × 3x DPR × 全屏是杀进程套餐。WKWebView 比 Safari 同版本更紧。见 DPR 封顶。

Android WebView 随厂商内核,不能用 Chrome 版本号推断。

6. 怎么维护这张表

不要在业务里写 if (safari && version < 17)。写 detectCanvasCaps() + 单测矩阵(最新 Chrome / Firefox / Safari / iOS Safari)。差异清单只解释 为什么探测会失败

权威资料

核对日期:2026-08-26