spa页面,初次进入音乐播放界面的时候,在ios上无法自动播放,通过play()方法还是无法实现播放。有什么方法可以解决的
这个是ios系统的限制,ios系统基于安全考虑,是不允许自动播放audio和vedio的,之前用过一个简单粗暴的方法,引用了微信的js-sdk,参考的伪代码是
function autoPlayAudio() {
wx.config({
debug: false,
appId: '',
timestamp: 1,
nonceStr: '',
signature: '',
jsApiList: []
});
wx.ready(function() {
document.getElementById('music').play();
});
}
最近在做个项目,需要js控制音频播放,我的办法是:
1、点击等交互事件后,播放一个空白音频。
audio.src='mute.mp3';
audio.play()
2、在需要js控制播放的地方,把音频src改掉,就能直接调用audio.play()了。
说白了就是先通过点击等交互事件播放空白音频,播放过后就能通过JS控制了。
<audio id="musicid" src="music.mp3" preload="preload" autoplay="autoplay" loop="loop">
<script type="text/javascript">
// 音乐播放
function autoPlayMusic() {
// 自动播放音乐效果,解决浏览器或者APP自动播放问题
function musicInBrowserHandler() {
musicPlay(true);
document.body.removeEventListener('touchstart', musicInBrowserHandler);
}
document.body.addEventListener('touchstart', musicInBrowserHandler);
// 自动播放音乐效果,解决微信自动播放问题
function musicInWeixinHandler() {
musicPlay(true);
document.addEventListener("WeixinJSBridgeReady", function () {
musicPlay(true);
}, false);
document.removeEventListener('DOMContentLoaded', musicInWeixinHandler);
}
document.addEventListener('DOMContentLoaded', musicInWeixinHandler);
}
function musicPlay(isPlay) {
var audio = document.getElementById('musicid');
if (isPlay && audio.paused) {
audio.play();
}
if (!isPlay && !audio.paused) {
audio.pause();
}
}
autoPlayMusic();
</script>
10 回答11.1k 阅读
6 回答3k 阅读
5 回答4.8k 阅读✓ 已解决
4 回答3.1k 阅读✓ 已解决
2 回答2.6k 阅读✓ 已解决
2 回答4.7k 阅读✓ 已解决
4 回答4.3k 阅读✓ 已解决
我是这样做的: