最近由于业务需要,要求在微信公众号中开发一款HTML5单页面应用,开发场景中有一个播放页面,当进入播放页面的时候音频需要自动播放,于是乎我很自然的写下了这样的代码:
<audio id="myAudio" src="xxx.mp3" autoplay></audio >
在PC上启动本地服务,调试时是正常的。但是发布到线上,用自己的iphone在微信中打开页面时,却不能自动播放,于是我在网上查找了一些资料,这才了解到原来以上的写法在安卓和大部分ios的设备上是ok的,但是在小部分ios设备中不能实现自动播放的功能。
那么问题该如何解决呢?
答案很简单,关键在于微信的WeixinJSBridgeReady事件,这个是微信自带提供的事件,测试发现,只需在全局的ready函数中加入以下代码就可以实现自动播放功能了(以下是vue 1.x中的代码,如果是原生js,就在全局函数中加上就行了):
ready: function() {
audioAutoPlay('myAudio');
},
methods: {
audioAutoPlay: function(id) {
var audio = document.getElementById(id);
audio.play();
document.addEventListener("WeixinJSBridgeReady", function () {
audio.play();
}, false);
}
}