关于 Vue 微信客户端 不能播放音乐(报错和不能播放的问题)
前言
用vue 做音乐播放的时候,在本地可以打开播放,但在微信里面不能播放音乐
所以这样解决
// 音乐播放audioPlay(){
let _this = this;
var audio = _this.music;
if(_this.bgmUrl){
audio.src = _this.bgmUrl;
//audio.play();
_this.esPlayMusic();
_this.timeupdate();
wx.ready(()=>{
})
typeof WeixinJSBridge !== \'undefined\' && WeixinJSBridge.invoke(\'getNetworkType\', {}, function (res) {
//audio.play();
_this.esPlayMusic();
_this.timeupdate();
});
}
},
timeupdate() {
let _this = this;
var audio = _this.music;
audio.addEventListener("timeupdate", function() {
var duration = this.duration;
var currentTime = this.currentTime;
var percentage = (currentTime / duration) * 100;
if (percentage == 100) {
_this.audioPlay();
typeof WeixinJSBridge !== \'undefined\' && WeixinJSBridge.invoke(\'getNetworkType\', {}, function (res) {
_this.audioPlay();
});
}
})
},
主要是这段代码
typeof WeixinJSBridge !== \'undefined\' && WeixinJSBridge.invoke(\'getNetworkType\', {}, function (res) {//audio.play();
_this.esPlayMusic();
_this.timeupdate();
});
后来又因为 点击过快 出现报错了
The play() request was interrupted by a call to pause()
因为上一个用户的播报还没结束,这一个播报就要覆盖上来了,所以需要异步处理下
上代码了
// 异步加载音乐播放esPlayMusic(){
let _this = this;
//let audio = document.getElementById("audioPlay");
var audio = _this.music;
//audio.play();
var playPromise = audio.play();
if (playPromise) {
playPromise.then(() => {
// 音频加载成功
// 音频的播放需要耗时
setTimeout(() => {
// 后续操作
//console.log("done");
}, audio.duration * 1000); // audio.duration 为音频的时长单位为秒
}).catch((e) => {
//console.log("Operation is too fast, audio play fails");
});
}
},
这样就解决了
以上是 关于 Vue 微信客户端 不能播放音乐(报错和不能播放的问题) 的全部内容, 来源链接: utcz.com/z/375214.html