内容简介:工作中的总结和记录,第一次写,有问题烦请指出,会持续记录更新...1、监听播放完成监听 ended 事件不准确,可以监听 timeupdate 事件,判断 当前播放进度 currentTime 大于等于 总时长 duration 时,就是播放完成;
工作中的总结和记录,第一次写,有问题烦请指出,会持续记录更新...
一、audio
1、监听播放完成
监听 ended 事件不准确,可以监听 timeupdate 事件,判断 当前播放进度 currentTime 大于等于 总时长 duration 时,就是播放完成;
var oAudio = document.getElementById('audio_player'); oAudio.addEventListener('timeupdate', function () { // 监听播放完成,ended 事件不准确 if (oAudio.currentTime >= oAudio.duration) { _this.endFn(); }}, false);复制代码
2、设置当前音频播放时间点
ios系统直接设置无效,监听canplay(可播放时)再设置currentTime才可以;
if (isIos) { oAudio.addEventListener('canplay', () => { oAudio.currentTime = ''; }, { once: true }) } else { // 安卓没有 canplay 事件 oAudio.currentTime = ''; }复制代码
3、音频打点
android 音频打点 在 play 监听里处理,ios 在canplay里处理
if (isIos) { oAudio.addEventListener('canplay', () => { // ios 音频打点 可以在这里处理 }, { once: true }) } else { // 安卓没有 canplay 事件 oAudio.addEventListener('play', function () { if (Util.isAndroid) { // 打点代码 } }, { once: true }); } 复制代码
4、设置音频加载 loading 效果
ios 可监听 canplay 事件时移除 loading 效果,监听 loadstart 和 loadeddata 事件时添加 loading 效果;
if (isIos) { oAudio.addEventListener('loadstart', () => { if (isIos) { _this.isLoadaudio = true; } }, false) oAudio.addEventListener('loadeddata', () => { if (isIos) { _this.isLoadaudio = true; } }, false) oAudio.addEventListener('canplay', () => { _tihs.isLoadaudio = false; }, { once: true } )}复制代码
安卓不建议添加 loading 效果,因为没有准确的事件监听可以移除,否则只能加上不能移除(安卓支持 loadstart 和 loadeddata,不支持 canplay)
5、关于自动播放的问题: 需要触发一次才可播放;
6、多音频 audio 实现连续播放: 监听当前音频播放完成之后,ios 继续用同一个 audio 播放器对象,替换成新的src播放地址,可以实现连续播放效果;
<audio name="media" id="audio_player" preload> <source :src="audio_url" type="audio/mpeg"> </audio> var oAudio = document.getElementById('audio_player'); oAudio.src = self.pptData.ppt_list[index].audio_url; oAudio.play(); 复制代码
7、设置监听事件只执行一次,否则会执行多次
addEventListener 第3个参数设置为 { once: true };
oAudio.addEventListener('play', function () {}, { once: true });复制代码
8、监听微信浏览器后台运行时,禁止播放
$(document).on('visibilitychange', () => { var isHidden = document.hidden; var oAudio = document.getElementById('audio_player'); if (isHidden) { // 离开微信浏览器,后台运行 // 状态改为暂停 } else { // 再次进入浏览器 if (oAudio.paused) { // 锁屏时点击暂停了 // 状态改为暂停 } else { // 状态改为播放 } } })复制代码
二、Video
1、在X5内核中让video标签播放不自动全屏
只需要给video加上 webkit-playsinline playsinline x5-playsinline 即可(重点是x5-playsinline 起的作用)
<video class="qvideo" id="qvideo-wrap" playsinline webkit-playsinline x5-playsinline> </video>复制代码
注:x5内核-安卓下不能添加airplay="allow" x5-video-player-fullscreen="true" x-webkit-airplay="allow"(添加了之后playsinline属性就失效了)
2、安卓手机上,视频层级最高,其它弹窗等会被遮挡;
可在弹窗等出现的时候,视频高度设置为0;以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持 码农网
猜你喜欢:- 谈谈 Java 代码的兼容性
- 开源兼容性测试小工具:WebRTC Troubleshooting
- layui-v2.4.5 兼容性微调
- 我所遇过的移动端兼容性问题
- AmigaOS 3.1.4.1 发布,兼容性提高
- Angular 浏览器兼容性问题解决方案
本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们。
Python极客项目编程
Mahesh Venkitachalam / 王海鹏 / 人民邮电出版社 / 2017-5 / 69
Python 是一种强大的编程语言,容易学习而且充满乐趣。但掌握了基本知识后,接下来做什么? 本书包含了一组富有想象力的编程项目,它们将引导你用Python 来制作图像和音乐、模拟现实世界的现象,并与 Arduino 和树莓派这样的硬件进行交互。你将学习使用常见的Python 工具和库,如numpy、matplotlib 和pygame, 来完成以下工作: ● 利用参数方程......一起来看看 《Python极客项目编程》 这本书的介绍吧!