【bug解决】ios微信浏览器中背景音乐无法播放
我记得之前在一次项目中,出现过浏览报错:

当时的文档链接如右:【解决】HTML5新标签audio的autoplay自动播放属性失效的解决方案
所以在这次H5的制作中,我使用了iframe来加载音频文件,使用这种方式后,电脑端是没有问题的,但是当上传至服务器上在手机上浏览时,会出现点击音乐旋转按钮无法暂停播放音乐(使用iframe之后相当于一个子文档#document,但是我也找到方法获取子文档中的audio元素了,但是不知道为什么点击按钮后,暂停播放功能无法生效)、ios浏览器中音乐无法自动播放...等等问题
然后迫不得已,我重新换成了audio标签,然后重新载浏览器中运行,果然出现了第一次项目中的报错信息,但是很莫名的是,手机端居然能够正常自动播放音乐了,除了ios微信端(因为是H5页面,所以只测了微信,但是安卓的微信浏览器和其它浏览器是可以的)。
那么接下来就是要解决ios微信端无法自动播放的问题。
百度了很多方法,如下:
1、js中当文档加载完毕后,获取audio元素,然后调用audio.play()方法:
window.load = function(){
const audio = document.getElementByTagName('audio')[0];
audio.play();
}
运行结果:无效。报错Uncaught(in promise) DOMException
2、有小伙伴说明,ios为了节省用户流量等,对于自动播放中块管控很严格,必须要用户交互后才可以调用audio.play()方法。所以我们就添加了触摸屏幕的事件:
document.addEventListener('touchstart', function () {
if (key) {
audio.play();
audio.loop = true;
key = false;
}
})
运行结果:不能根本解决。相当于就是要通过用户触摸屏幕后才能播放音乐,但这个是治标不治本,如果用户没有一打开就触摸屏幕,那就会一很长一段时间都没音乐。
3、WeixinJSBridge接口解决微信中时候视频和音频自动播放问题:
运行结果:解决。这个是微信场景专门提供的api方法,可以解决ios中音视频不能自动播放背景音乐的bug...
不过这个也还是有一点问题,就是总感觉ios比安卓背景音乐播放反应有点迟钝。安卓基本一打开就有音乐,但是ios差不定多要等三秒左右,也不知道是什么问题...
【补充知识】

【参考网址】
【bug解决】ios微信浏览器中背景音乐无法播放的更多相关文章
- 在iOS微信浏览器中自动播放HTML5 audio(音乐)的2种正确方式
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...
- 解决H5微信浏览器中audio兼容-- 背景音乐无法自动播放
我们知道,ios 在safari浏览器中,audio标签不能在没有用户交互的情况下自动播放或有js直接控制播放,这是系统限制的一些原因. 但是背景音乐在微信浏览器可以设置自动播放,config配置一下 ...
- 解决安卓微信浏览器中location.reload 或者 location.href失效的问题
在移动wap中,经常会使用window.location.href去跳转页面,这个方法在绝大多数浏览器中都不会 存在问题,但早上测试的同学会提出了一个bug:在安卓手机的微信自带浏览器中,这个是失效的 ...
- ios微信浏览器中video视频播放问题
微信ios只支持几种特定的视频格式,一般使用mp4格式的视频(腾讯官方就是用的这种视频格式)
- 部分安卓手机微信浏览器中使用XMLHttpRequest 2上传图片显示字节数为0的解决办法
前端JS中使用XMLHttpRequest 2上传图片到服务器,PC端和大部分手机上都正常,但在少部分安卓手机上上传失败,服务器上查看图片,显示字节数为0.下面是上传图片的核心代码: HTML < ...
- 解决微信浏览器中无法一键拨号问题tel
公众号中需要在某些页面显示手机号码,并且需要点击后拨号. 原以为 <a href="tel:10086">10086</a> 可以解决了, 没想到在微信浏览 ...
- vue-router 在微信浏览器中操作history URl未改变的解决方案
在PC端和手机浏览器中router.replace() or router.push()能够正常使用,页面的地址和页面都正常显示:但是在微信中,从/a页面通过router.push('/b')跳转到/ ...
- egret 篇——关于ios环境下微信浏览器的音频自动播放问题
前段时间公司突然想用egret(白鹭引擎)做一个金币游戏,大半个月边看文档边写吭哧吭哧也总算是弄完了.期间遇到一个问题,那就是ios环境下微信浏览器的音频自动播放问题. 个人感觉吧,egret自己封装 ...
- 改进:js修改iOS微信浏览器的title
问题简介 前端入门没多久,可能连入门也不算,最近网上流行各自书籍改名,什么<前端开发,从入门到放弃>,<Android开发,从入门到改行>之类的,程序员真是个爱自嘲的群体,但我 ...
随机推荐
- GitHub 将源代码保存在北极洞穴,至少使用 1000 年!
最近,GitHub分享了开放Arctic Code Vault的计划,该计划旨在存储和保存Flutter和TensorFlow等开源软件. 所有开放源代码项目的代码都将存储在胶片上,该胶片每帧包含88 ...
- STL algorithm 头文件下的常用函数
algorithm 头文件下的常用函数 1. max(), min()和abs() //max(x,y)和min(x,y)分别返回x和y中的最大值和最小值,且参数必须时两个(可以是浮点数) //返回3 ...
- js预解析实例
<script> // f1(); // console.log(c);//9 // console.log(b);//9 // console.log(a);//报错 // functi ...
- Spring实战(八)bean装配的运行时值注入——属性占位符和SpEL
前面涉及到依赖注入,我们一般哦都是将一个bean引用注入到另一个bean 的属性or构造器参数or Setter参数,即将为一个对象与另一个对象进行关联. bean装配的另一个方面是指将一个值注入到b ...
- 《深入理解 Java 虚拟机》学习 -- 垃圾收集器
<深入理解 Java 虚拟机>学习 -- 垃圾收集器 1. Serial 收集器(新生代) 含义: 单线程收集器. 缺点: 进行垃圾收集时,必须暂停其他所有的工作线程. 优点: 简单而高效 ...
- centos配置发送邮件
邮件已经可以接收到了 CentOS下发送邮件有很多种方法,这里采用比较简单的mail客户端,配置第三方邮件服务商,例如:163.com 1.安装所用软件 yum install mailx sendm ...
- JavaScript例子2-使一个特定的表格隔行变色
<!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title> ...
- loj 3014「JOI 2019 Final」独特的城市
loj 我本来是直接口胡了一个意思一样的做法的,但是因为觉得有点假+实现要用并查集(?)就卡了好一会儿... 对于一个点\(x\)来说,独特的点一定在它的最长链上,如果有独特的点不在最长链上,那么最长 ...
- MySQL之常用查询
1) 查询字符集 show variables like 'character%'; 2)查看版本 select version(); 3) 共享表空间的数据文件存储路径 show variables ...
- OGG学习笔记02
实验环境:源端:192.168.1.30,Oracle 10.2.0.5 单实例目标端:192.168.1.31,Oracle 10.2.0.5 单实例 1.模拟源数据库业务持续运行 2.配置OGG前 ...