audio标签的自动播放(ios)
0.应用场景
前端移动端开发,经常有播放音乐的需求。比如我有公司做过类似支付宝的年度账单,功能是用户在查看年度账单的过程中播放轻音乐。
1.audio标签播放mp3
(一)常用属性和API介绍
1.controls属性
有了它,就会显示控制条。
图1 chrome默认audio样式

图2 ie默认audio样式

图3 firefox默认audio样式

图4 ios的微信端(iphone6,系统版本11.4,微信使用内置Safari):

2.autoplay属性
autoplay指的是自动播放,chrome61、ie11 ,ie edge、firefox 60已测试,可自动播放。ios不能自动播放,那么先点一下播放按钮才行。这是什么原因呢,ios为了用户流量着想,限制了audio标签的自动播放,那么safari没有用户的交互就播放会被拦截。
PS:6月29日补充。杯具了:(,我的电脑自动更新到chrome67了,不能自动播放了。参考“Chrome禁止audio自动播放”搜索词。
autoplay的默认值是false。
(二)实现ios自动播放
我们刚才说了,除了ios,其他端都能够使用autoplay属性实现自动播放。那么ios自动播放应该如何来做呢?
首先,我们要知道音频流(audio stream)在ios上的工作方式。那么就是说只有有了用户交互后才能下载,接下来才能播放。
如下图:
参考Overcoming iOS HTML5 audio limitations
图1:Workflow to load audio in mobile Safari

第二,用Js来完成效果,ios的微信端可以监听XXX事件,safari(和ios微信端)监听touchstart事件,然后手动play。
ios微信端:
<script>
var audio = document.querySelector('#audio');
audio.play();
//既然是微信的ready事件,只能在微信端使用
document.addEventListener("WeixinJSBridgeReady", function () {
audio.play();
}, false);
</script>
成功播放!
ios的safari浏览器和微信端:
<audio id="audio" controls src="assets/music.mp3" autoplay>
<source src="assets/music.mp3" type="audio/mpeg">
</audio> <script>
var audio = document.querySelector('#audio');
//safari和微信
document.addEventListener("touchstart", function () {
audio.play();
}, false);
</script>
成功播放!
长时间的写博客,有些累了,完整Demo待更新!!!
audio标签的自动播放(ios)的更多相关文章
- CEF3 HTML5 audio标签为什么不能播放mp3格式的音频文件
CEF3 HTML5 audio标签 为什么不能播放mp3格式的音频文件 原因略. 解决方法: 找一个最新版的chrome ,我用的是24版本.路径 C:\Documents and Sett ...
- 【Egret】里使用audio标签达到默认播放背景音乐
方法一 <audio id="bgmMusic" style="position:absolute;" src="resource/assets ...
- H5音乐自动播放ios//禁止安卓手机图片点击
定义音乐按钮 <div id="music-btn" class="o-play" style="width: 24px; height: 24 ...
- <audio>标签HTML5音乐播放器
<audio>标签:用于在文档中表示音频内容.利用它,你可以在你的个人网站上放一首你喜欢的歌. <audio src="music.mp3">< ...
- HTML5 audio标签自制音乐播放器
相关技能 HTML5+CSS3(实现页面布局和动态效果) Iconfont(使用矢量图标库添加播放器相关图标) LESS (动态CSS编写) jQuery(快速编写js脚本) gulp+webpack ...
- iphone在微信中audio 音频无法自动播放
问题: Html5的audio 音频在电脑端和android端都可以实现自动播放,在iphone上无法实现,下面针对的是微信浏览器里面的解决方法 html代码: <div id="au ...
- 原生js设置audio在谷歌浏览器自动播放
https://www.cnblogs.com/sandraryan/ 谷歌浏览器更新后禁止了autoplay功能,但是有时候可能会需要自动播放. 研究了一段代码. <!DOCTYPE html ...
- ios设置音乐audio自动播放
因为audio标签的自动播放:autoplay.在ios系统中不能自动播放,此时需要设置,在进入页面自动播放音乐. 第一步,先引入js微信 <script src="js/jweixi ...
- 100%解决ios上audio不能自动播放的问题
由于ios的安全机制问题,不允许audio和video自动播放,所以想要使audio标签自动播放那是实现不了的,即使给play()也是播放不了. 解决方法: 首先,创建audio标签:<audi ...
随机推荐
- (C#版本)提升SQlite数据库效率——开启事务,极速插入数据,3秒100万,32秒1000万条数据
SQLite插入数据效率最快的方式就是:开启事务 + insert语句 + 关闭事务(提交) 利用事务的互斥性,如果在批量的插入操作前显式地开启一次事务,在插入操作结束后,提交事务,那么所有 ...
- Devexpress Tab Control 文档
https://documentation.devexpress.com/WPF/8078/Controls-and-Libraries/Layout-Management/Tab-Control/P ...
- python中的内置函数,递归,递归文件显示(二),二分法
1.部分内置函数 repr()显示出字符串的官方表示形式,返回一个对象的string形式 # repr 就是原封不动的输出, 引号和转义字符都不起作用 print(repr('大家好,\n \t我叫周 ...
- leetcode 56 合并区间 JAVA
题目: 给出一个区间的集合,请合并所有重叠的区间. 示例 1: 输入: [[1,3],[2,6],[8,10],[15,18]] 输出: [[1,6],[8,10],[15,18]] 解释: 区间 [ ...
- 一次mysql主从同步问题及解决过程
Normal 0 7.8 磅 0 2 false false false EN-US ZH-CN X-NONE MicrosoftInternetExplorer4 由于经常被抓取文章内容,在此附上博 ...
- hadoop版本总结
hadoop有两个分支:0.20.x 和0.23.x.其中0.20.x是比较稳定的版本,0.23.x中新特性更多,但相对不稳定. 其中从0.20.x 分支发展出来的是:hadoop1.0,C ...
- k_means算法C++实现,改为面向对象
画的类图如下:
- [CISCO] Telete/SSH 之 Port 绑定/端口安全
[网络] Telete/SSH 之 Port 绑定/端口安全 一.前言 之前写完了网络] DHCP 之 Mac 绑定,CiSCO 交换机配置 SSH 登陆.这次我们再试试能不能挖的在深入些. (1) ...
- 爬虫2:urllib
了解即可,不好用 一. 概述 python内置的http请求库,包括4个模块,分别如下 urllib.request 请求模块 urllib.error 异常处理模 ...
- mybatis常用默认配置
设置参数 描述 有效值 默认值 cacheEnable 该配置影响所有映射器中配置的缓存全局开关 true.false true lazyLoadingEnable 延迟加载的全局开关.当它开启时,所 ...