ios中audio不能直接通过audio.play()播放,需要用户在click事件或者touch事件中执行audio.play()才能播放。

ajax回调中audio.play()音乐不能正常播放。

用户点击按钮,等服务器返回数据后再播放相应的成功或失败的音乐,测试在ios中不能正常播放。猜测ios中的audio不能再ajax回调函数中play()

下面记录一下ios中ajax回调中播放音乐的问题解决过程

  • 解决方案一 --降低音量

在用户点击时间后将audio的音量设置为0,等success后将音量设置为1; volume可以控制audio的音量大小,取值范围为 0~1

audio.volume=number

发现在chrome的手机模式可以将音乐静音,ios中竟然不能控制音量,好吧这个被ios屏蔽了。放弃了。。。

  • 解决方案二 --播放后立即暂停

用户点击按钮后立即播放音乐,等ajax返回数据后再继续播放。测试能够正常播放。部分代码如下:

// 用户click事件
if (this.isIOS()) { // ios单独处理 安卓不需要
this.$refs.audio.play()
this.$refs.audio.pause()
} // ajax成功后的事件
this.$refs.audio.pause()
this.$refs.audio.currentTime = 0
this.$refs.audio.play()

由于是vue项目,所以代码中有this.$refs小伙伴们别介意;

总结

  1. 在ios中,如果需要播放音乐或者视频,需要用户手动触发事件在调用.play()才能播放(autoplay或者直接.play()是不能直接触发的);

  2. 如果需要在ajax回调函数中播放音乐,需要在用户触发事件后播放音乐立即暂停然后才能在回调函数中.play(),不然ios中是播放不成功的。

最新文章

  1. SVNKit支持SSH连接
  2. 组合or继承
  3. SVM1 线性SVM
  4. (转)投影矩阵的推导(Deriving Projection Matrices)
  5. MVC设计模式(持续更新中)
  6. 一步一步理解word2Vec
  7. Fast Report Data Filter
  8. sqlplus 一次奇葩问题 HTTP proxy setting has incorrect value
  9. ios常用的几个动画代码
  10. JS事件 之内存与性能
  11. linux终端使用ss代理
  12. LightOJ - 1341 Aladdin and the Flying Carpet (算术基本定理)
  13. oracle常用函数详解(详细)
  14. Linux如何实现开机启动程序详解(转)
  15. spring boot实战(第二篇)事件监听
  16. Getting Started with Amazon EC2 (1 year free AWS VPS web hosting)
  17. Notes About Singular Value Decomposition
  18. Salesforce LINKS
  19. pip国内镜像(清华大学镜像)
  20. levelDB, TokuDB, BDB等kv存储引擎性能对比——wiredtree, wiredLSM,LMDB读写很强啊

热门文章

  1. Win10系统使用Gitblit搭建局域网Git服务器
  2. go RWMutex 的实现
  3. PHP-MVC-三层架构模拟
  4. tensorflow源码剖析之framework-kernel
  5. ASP.NET Core框架探索之Authentication
  6. 1. 查看NGINX是否在运行.
  7. LGP3709题解
  8. BBS项目分布搭建五(评论相关功能实现)
  9. 安装Win7与Ubuntu16.04双系统操作教程
  10. 创建一个 20G 的分区,并格式化为 ext4 文件系统