页面运行良好,直到被保存到主屏幕。如果从主屏幕启动,则不会出现音频。错误是“值不是 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 不缓存音频文件。