1

页面运行良好,直到被保存到主屏幕。如果从主屏幕启动,则不会出现音频。错误是“值不是 AudioBuffer 的类型”。我猜这里使用 XMLHttpRequest() 加载音频存在问题。M4A 文件存在于 cache.manifest 中,因此应该正常缓存。你能请教吗?谢谢

function beep(){
    var sound = context.createBufferSource();
    sound.buffer = soundBuffer; <<< here
    sound.connect(context.destination);
    sound.noteOn(0);
}

……

if('webkitAudioContext' in window) {
    context = new webkitAudioContext();

    function bufferSound(event) {
        var request = event.target;
        soundBuffer = context.createBuffer(request.response, false);
    }

    var request = new XMLHttpRequest();
    request.open('GET', 'stoplight.m4a', true);
    request.responseType = 'arraybuffer';
    request.addEventListener('load', bufferSound, false);
    request.send(); 
}

更新:使用 Base64 音频编码解决。iOS 不缓存音频文件。

4

0 回答 0