【发布时间】:2011-01-25 22:03:06
【问题描述】:
我想在 iPad 上的 Mobile Safari 中运行的 Web 应用程序上播放一个短(小于 1 秒)的音频文件,以响应用户输入,同时将事件和音频播放之间的延迟降至最低。在页面重新加载之间可以多次触发播放,因此我想缓存音频文件。
以下内容会在第一次点击时播放文件,但之后什么都没有发生:
var audio = new Audio("ack.mp3");
$("#button").click(function(e) {
e.preventDefault();
audio.play();
}
如果我将事件侦听器添加到重新加载文件的“结束”事件,我可以从同一个对象获得两次回放,然后静音:
var audio = new Audio("ack.mp3");
audio.addEventListener('ended', function() {
audio.load();
}, false);
$("#button").click(function(e) {
e.preventDefault();
audio.play();
}
如果我像这样手动将 currentTime 属性设置为 0:
var audio = new Audio("ack.mp3");
audio.addEventListener('ended', function() {
audio.currentTime=0;
}, false);
$("#button").click(function(e) {
e.preventDefault();
audio.play();
}
我在错误控制台中收到以下错误:
INDEX_SIZE_ERR: DOM Exception 1: Index or size was negative, or greater than the allowed value.
关于如何完成这项工作的任何想法?提前致谢
【问题讨论】:
标签: javascript ipad html audio mobile-safari