代码之家  ›  专栏  ›  技术社区  ›  Georgi Atsev

在Safari中多次播放HTML5音频时出现问题

  •  3
  • Georgi Atsev  · 技术社区  · 12 年前

    这是我的代码:

    Html格式:

    <div id="audio-files" style="display: none;">
        <audio id="click-sound">
            <source src="/assets/click.mp3" type="audio/mpeg">
            <source src="/assets/click.wav" type="audio/wav">
        </audio>
    </div>
    

    JavaScript语言:

    play: function() {
      var audio = $('#audio-files').find('audio#click-sound');
      if (audio.length) {
        audio[0].play();
      }
    }
    

    期望行为:
    当我调用play()时,声音应该播放一次。在页面加载时,应该只有一个对服务器的请求。对play()的多次调用不应触发多个请求。

    实际行为:
    -Firefox(19.0.2)、Chrome(26.0.1410.43)和Opera(12.15)运行正常。
    -Safari(6.0.3)只播放一次所需的声音,然后在被要求播放时拒绝播放该声音或任何其他声音。

    我试着添加 audio[0].load() 之前 audio[0].play() 但这导致浏览器每次被要求播放音频时都会发出请求,这是完全不可取的。

    小提琴: http://jsfiddle.net/Tpvfm/

    1 回复  |  直到 12 年前
        1
  •  1
  •   danilopopeye Norguard    12 年前

    我认为你的示例mp3文件有问题。 我刚从你的小提琴上取下它(mp3),它在OSX上的Safari中工作。

    <div id="audio-files" style="display: none;">
      <audio id="click-sound">
        <source src="/assets/click.wav" type="audio/wav">
      </audio>
    </div>
    

    小提琴: 73GCX