码迷,mamicode.com
首页 > 其他好文 > 详细

解决h5页面背景音乐不能自动播放的方案

时间:2019-11-23 10:09:56      阅读:126      评论:0      收藏:0      [点我收藏+]

标签:static   eve   bsp   增强   music   关闭   系统   初始化   用户体验   

  • 场景:微信、浏览器、App
  • 普通解决方案:采用audio标签的autoplay属性
  • 现象:
  1. 大部分IOS系统和少部分Android微信不支持自动播放
  $解决方案:监听WeixinJSBridgeReady事件、DOMContentLoaded事件
微信的JS API建立在微信壳浏览器的内置JS对象WeixinJSBridge上,WeixinJSBridge并不是WebView一打开就有了,客户端需要初始化这个对象,当这个对象准备好的时候,客户端会抛出事件"WeixinJSBridgeReady"。
发现部分机型,监听DOMContentLoaded和load事件,在回调中也可以播放音乐;
所以,为了保险起见,可以同时监听两个事件,以增强其适用性。
代码如下:
<audio style="display:none; height: 0" id="bg-music" preload="auto" src="../static/videos/bg-music.mp3" loop="loop"></audio>

document.addEventListener(‘DOMContentLoaded‘, function () {
    function audioAutoPlay() {
        var audio = document.getElementById(‘bg-music‘);
            audio.play();
        document.addEventListener("WeixinJSBridgeReady", function () {
            audio.play();
        }, false);
    }
    audioAutoPlay();
});
 
  1. 部分Android浏览器和所有IOS下Safari浏览器不支持自动播放
  解决方案:通过手势事件播放音乐
  (1) 监听body的touchstart事件,回调中播放音乐;
  缺点:部分元素的touch事件可能会阻止冒泡,需要在对应的地方调起播放音乐函数
  (2) 可以增加透明层,点击到透明层,播放音乐,关闭透明层;
  缺点:第一次点击按钮元素可能不响应,造成用户体验上的伤害。
  1. 部分App不支持webview音乐自动播放
  解决方案:1.壳浏览器支持;2.通过手势事件播放音乐
 
·  技术图片

 

 

解决h5页面背景音乐不能自动播放的方案

标签:static   eve   bsp   增强   music   关闭   系统   初始化   用户体验   

原文地址:https://www.cnblogs.com/rgqjson/p/11907084.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!