|
阅读:10247回复:0
[前端]audio的play()方法,报错DOMException: The play() request was interrupted by a call to pause().
ncaught (in promise): The play() request was interrupted by a call to pause().
场景 JavaScript 在调用 Audio 播放声音的时候,因为处理不当经常会出现上面的错误提示。 原因1: 在调用 Audio 的 play() 方法之后就立即被之后一次调用 pause() 方法中断了。错误提示中明确指出了调用 play 方法是返回了一个Promise对象。 原因2: 对同一个audio对象,频繁的修改src,并进行play(), 在没有播放完上一个声音时,又进行src的修改,进行play 解1: setTimeout(() => {
$video.play();
}, 10 );或者(function (argument) {
// 音频文件
var src = "./rank.mp3";
// 初始化Aduio
var audio = new Audio();
var playPromise;
audio.src = src;
playPromise = audio.play();
if (playPromise) {
playPromise.then(() => {
// 音频加载成功
// 音频的播放需要耗时
setTimeout(() => {
// 后续操作
console.log("done.");
}, audio.duration * 1000); // audio.duration 为音频的时长单位为秒
}).catch((e) => {
// 音频加载失败
});
}
})();解2: 不要使用同一个Audio对象,每次创建新的Audio对象设置src,再进行播放 参考: https://blog.csdn.net/demon3182/article/details/79196282/ https://www.cnblogs.com/lixuemin/p/7374369.html |
|
|