audio音频兼容性问题小结

我在页面上放一个<audio loop="loop" src="flash/music.mp3" id="media" autoplay></audio>结果苹果微信端、苹果safari、UC浏览器都无法播放,我的华为荣耀8微信及内置浏览器均可播放!

首先给微信浏览器做兼容处理:

audioAutoPlay('media');
function audioAutoPlay(id){
	var audio = document.getElementById(id);
    audio.play();
    document.addEventListener("WeixinJSBridgeReady", function () {
        audio.play();
    }, false);
}

但是苹果safari和UC浏览器还是无法播放,经查阅官方文档不允许audio自动播放,即使有autoplay也没有作用,被强制禁用了!必须用户主动交互(例如 click)后才能播放 audio。

由于我给了音频(停止/播放)同步的按钮(停止/旋转),

<div id="audio_btn" class="video_exist" style="display: block;">
    <audio loop="loop" src="flash/music.mp3" id="media" autoplay></audio>
</div>

因此我们可以监听音频的播放状态来判断音乐按钮是否添加旋转样式。

/*监听音乐是否播放*/
$("#media").get(0).addEventListener("play",function() {
    $("#audio_btn").addClass("rotate");
});

这样当监测到音频不能播放时,按钮没有旋转,通过用户点击按钮来实现音频的播放:

//音乐控制按钮(播放/暂停)
$("#audio_btn").click(function() {

    if ($("#media").get(0).paused) {
        $("#media").get(0).play();
        $(this).addClass("rotate");
    } else {
        $("#media").get(0).pause();
        $(this).removeClass("rotate");
    }
})

旋转样式:

@-webkit-keyframes rotating{from{-webkit-transform:rotate(0deg)}to{-webkit-transform:rotate(360deg)}}
@keyframes rotating{from{transform:rotate(0deg)}to{transform:rotate(360deg)}}
@-moz-keyframes rotating{from{-moz-transform:rotate(0deg)}to{-moz-transform:rotate(360deg)}}
.rotate {
    -webkit-animation: rotating 1.2s linear infinite;
    -moz-animation: rotating 1.2s linear infinite;
    -o-animation: rotating 1.2s linear infinite;
    animation: rotating 1.2s linear infinite;
}

 

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值