代码之家  ›  专栏  ›  技术社区  ›  Peter Hosey

HTML5音频对象在Safari中不播放

  •  4
  • Peter Hosey  · 技术社区  · 14 年前

    打开 my page

    bell = new Audio("alarmclock.mp3");
    

    稍后(作为对jQuery倒计时对象过期的响应),我播放它:

    bell.play();
    

    结果:

    • 适用于Mac的Chrome(6.0.472.55):音频播放良好。
    • OmniWeb(5.10.2):音频播放良好。
    • 我什么也没听到。 音频播放得很好。(我不知道为什么之前没用。)
    • MobileSafari(iOS3.1.3我的设备的最新版本):我什么也没听到。

    2 回复  |  直到 14 年前
        1
  •  5
  •   Remi Grumeau    14 年前

    关于iPhone Safari:当onclick事件启动时,play()似乎可以工作。 见 http://groups.google.com/group/iphonewebdev/browse_thread/thread/91e31ba7ae25e6d4?hl=en

        2
  •  3
  •   Domenic    14 年前

    很好的问题是“我该如何解决这个问题?”。这是我的攻击计划。。。

    • 在Mac上使用Safari进行调试;如果在Mac上运行,那么使用MobileSafari进行测试,因为后者更麻烦。
    • 从空白页开始。将HTML5音频元素静态地插入这个MP3文件(不是通过JavaScript)。
    • $(document).ready(function () { /* ... */ }) 在页面加载时加载音频。它还能用吗?
    • 好的,现在试着把你的倒计时逻辑添加到演示页面——尽可能少地添加。这是问题的根源吗?
    • 如果你已经达到这一点,它仍然在你的演示页面上工作,你知道它将是你的网站上所有其他复杂的事情,而不是音频问题,甚至动态加载的音频。在这种情况下,祝你好运:-S。要么在空白页中添加内容,每次都进行测试,要么暂时从原始页中删除它们,直到成功为止。然后你就会知道是什么引起了这个问题。
        3
  •  0
  •   Sourav Purkait    5 年前

    使用

    bell = new Audio("alarmclock.mp3");
    /*** The magical line ***/
    bell.load()
    
    bell.play()
    

    因为load()需要一些时间。所以最好加载()页面上的音频以减少延迟。