video.addEventListener('error', () => {
console.warn('media error', video.error && video.error.code);
wrap.classList.add('is-failed');
});
部分安卓机打开文章,播放器区域一直黑着,控制台没有报错,video.error.code 是 4,页面上没有任何提示。这类现象通常不是突然出现的,往前翻半天日志能看到苗头。
追下去是这么回事:视频编码是 H.265,老机型不支持,error 事件触发了但页面没有监听,用户只看到黑框。source 标签也没有备用地址。
「视频加载错误」确认了原因之后,改动尽量只碰那一处,顺手改的东西后面最容易出问题。权限不要一口气开到最大,先加到够用再往上试,范围小才好收。
把复现步骤压到三条以内,交给同事也能跑出来,才算真的定位清楚。改动写完就同步给同事,下一个人踩同一个坑,成本还是你的。
验证用真实数据走一遍,测试数据太干净,边界情况根本碰不到。
处理上按这个顺序:监听 video 的 error 事件 读 error.code 给出文案;补一个 H.264 的 source 作为兜底;失败时显示封面和重试按钮。
确认没问题再收工,不支持的机型上显示「当前浏览器无法播放」和重试按钮,不再是黑框。
