即使在点击处理程序上也不会加载/播放Html5音频

时间:2013-01-23 13:43:17

标签: javascript html5 ios5 html5-audio soundmanager2

我使用以下代码在iPad Safari上加载声音。

    var EI={sound:{}};
    EI.sound.load = function(){
        var preferFlash = true;
        if (Ext.os.is('iOS') && Ext.browser.is('WebKit'))
            preferFlash = false;
        // Load sound modules
        soundManager.setup({
            debugMode: true,
            preferFlash: false,
            onready: function(){
                var s = EI.sound; 
                s.audio = soundManager.createSound({
                    id: 'audio',
                    url: 'sound/sprite.mp3'
                });
                var opt = s.opt.online, f = opt.start+opt.duration, t=f+1500;
                if (s.enabled)  s.audio.play({from:opt.start, to:opt.start+opt.duration});
            }
        });
    }

opt定义为

EI.sound.opt = {
    "msg":{start: 53, duration: 701},
    "offline":{start: 1904, duration: 487},
    "online":{start: 3548, duration: 2476},
}

按钮click事件处理程序看起来像这样,

handler: function(btn){
    EI.sound.load();
}

问题是当点击按钮时声音不播放。我知道Mobile Safari对html5音频有限制。这些是我采取的步骤。

  1. 只能加载一个文件。所以我制作一个音频精灵,只播放它的一部分。
  2. 声音只能在click或touchstart甚至处理程序上加载。所以我在点击事件处理程序上加载。
  3. 但仍然没有声音。按下那个按钮,我希望听到声音。它是一个启动图像类型按钮。它是用户必须按下以使用该应用程序的第一个按钮。

    如何成功播放音频?

    以下是一些资源

    1. http://www.ibm.com/developerworks/library/wa-ioshtml5/index.html
    2. SoundManager2 on iPhone - Sound not playing on jQuery Load

1 个答案:

答案 0 :(得分:0)

您正在使用" EI.sound.load()"而你必须使用" EI.sound.play()"或者autplay:在你的soundmanager设置中为true。