H5移动端IOS音频自动播放解决
在移动端,H5的标签controls="controls" autoplay="autoplay",不支持此标签。
需要用JS代码来实现网页加载后音频自动播放功能。
html代码如下:
<!-- 音频 --> <audio controls="controls" autoplay="autoplay" id="mp3Btn" style="display: none;"> <source src="__IMG__/mp3.mp3" type="audio/mp3" /> </audio> <!-- 音频 end--> <div style="width: 50px;height: 50px; position: absolute; top: 20px;right: 10px;z-index: 100" class="btn-audio rotateClass"> <img src="__IMG__/audio.png" style=" width: 50px;"> </div>
JS代码如下:
<script type="text/javascript"> $(document).ready(function(){ //播放完毕 $('#mp3Btn').on('ended', function() { console.log("音频已播放完成"); $('.btn-audio').removeClass('rotateClass'); }); //播放器控制 var audio = document.getElementById('mp3Btn'); audio.volume = .3; $('.btn-audio').click(function() { event.stopPropagation();//防止冒泡 if(audio.paused){ //如果当前是暂停状态 $('.btn-audio').addClass('rotateClass'); audio.play(); //播放 return; }else{ //当前是播放状态 $('.btn-audio').removeClass('rotateClass'); audio.pause(); //暂停'' } }); }); </script>
在安卓机上测试,此功能能够正常使用,页面加载完成后音频自动播放,并能够通过手动点击图片来控制音频播放和暂停。
但是ios由于对流量存在限制,IOS还是不支持页面加载完后自动播放,可以通过调用微信提供的接口,在微信中打开实现音频的自动播放功能。代码如下。:
<script src="http://res.wx.qq.com/open/js/jweixin-1.0.0.js"></script> <script type="text/javascript"> document.addEventListener("WeixinJSBridgeReady", function () { document.getElementById('mp3Btn').play(); // document.getElementById('video').play(); }, false); </script>
同时为了隐藏播放器,已经给予控制播放器的伪按钮图片更好看的样式,通过CSS3来控制,让其在音频播放时候旋转,暂停时停止旋转。
css代码如下:
.rotateClass{ -webkit-transform:translate3d(0,0,0); -moz-transform:translate3d(0,0,0); transform:translate3d(0,0,0); /* 设置动画,animation:动画名称 动画播放时长单位秒或微秒 动画播放的速度曲线linear为匀速 动画播放次数infinite为循环播放; */ -webkit-animation:play 3s linear infinite; -moz-animation:play 3s linear infinite; animation:play 3s linear infinite; } @-webkit-keyframes play{ 0% { /* 水平翻转 */ /*-webkit-transform:rotateY(0deg);*/ /* 垂直翻转 -webkit-transform:rotateX(0deg); 顺时针旋转 -webkit-transform:rotate(0deg); 逆时针旋转 -webkit-transform:rotate(0deg); */ -webkit-transform:rotateX(0deg); } 100% { -webkit-transform:rotate(360deg); /* 水平翻转 */ /*-webkit-transform:rotateY(360deg);*/ /* 垂直翻转 -webkit-transform:rotateX(360deg); 顺时针旋转 -webkit-transform:rotate(360deg); 逆时针旋转 -webkit-transform:rotate(-360deg); */ } } @-moz-keyframes play{ 0% { -moz-transform:rotate(0deg); /*-moz-transform:rotateY(0deg);*/ /* -moz-transform:rotateX(0deg); -moz-transform:rotate(0deg); -moz-transform:rotate(0deg); */ } 100% { -moz-transform:rotate(360deg); /*-moz-transform:rotateY(360deg);*/ /* -moz-transform:rotateX(360deg); -moz-transform:rotate(360deg); -moz-transform:rotate(-360deg); */ } } @keyframes play{ 0% { transform:rotate(0deg); /* transform:rotateY(0deg);*/ /* transform:rotateX(0deg); transform:rotate(0deg); transform:rotate(0deg); */ } 100% { transform:rotate(360deg); /* transform:rotateY(360deg);*/ /* transform:rotateX(360deg); transform:rotate(360deg); transform:rotate(-360deg); */ }