zoukankan      html  css  js  c++  java
  • ios audio不能够正常播放

    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中是播放不成功的。

  • 相关阅读:
    完全二叉树求结点左右孩子编号
    while(p)的作用
    数组和链表的区别
    Seqlist L 与 Seqlist *L的区别
    exit和return
    java EE 的页面获得路径
    如何理解asp.net的AutoEventWireup
    asp.net的服务器控件客户端空件的区别以及如何刷新页面不靠数据库数据停留在页面
    外部样式?内联样式?内部样式表?区别
    html 与 htm的区别
  • 原文地址:https://www.cnblogs.com/10manongit/p/12846254.html
Copyright © 2011-2022 走看看