参考:Chrome 声音自动播放抱错问题【play() failed】

由于移动端浏览器一般是禁止音视频自动播放,所以会出现很多不能直接实现的问题。

本次的问题为:在ios端的浏览器中(Safari或微信内置浏览器),出现音频播放报错问题
Object {name: "NotAllowedError", message: "... message: "The request is not allowed by the user agent or the platform in the current context, possibly because the user denied permission."

报错原因:用户还没有交互,不允许调用AudioContext,但实际是把调用函数写在了交互后的某个异步或定时器中,所以会出现相同的错误。

解决办法:在交互的函数中先播放并暂停一遍音频,在下文继续处理原有的逻辑正常播放音频

1
2
3
4
5
6
7
8
9
10
11
const Audio = $(`#audio`)[0];
let playPromise = Audio.play();
if (playPromise) {
playPromise.then(() => {
// 音频加载成功
Audio.pause();
}).catch((e) => {
// 音频加载失败
console.log('音频加载失败', e);
});
}
  1. 长按保存图片的问题

  2. htmltocanvas ios15文字不显示