【发布时间】:2011-07-26 02:37:25
【问题描述】:
所以,我正在构建一个 Web 应用程序,该应用程序有一个 div,其中的文本会随着各种用户操作而变化(它正在逐步浏览一组文本)。我正在尝试向其中添加音频,因此我在适当的位置制作了另一个包含声音文件的数组:
var phrases=['Please hand me the awl.','etc1','etc2','etc3'];
var phrasesAudio=['awl.mp3','etc1.mp3','etc2.mp3','etc3.mp3'];
在每个动作完成时,一个“计数器”变量递增,每个数组在该计数器处查找对象
var audio = document.createElement("audio"),
canPlayMP3 = (typeof audio.canPlayType === "function" &&
audio.canPlayType("audio/mpeg") !== "");
function onAction(){
correct++;
document.getElementById('speech').innerHTML=phrases[correct];
if(canPlayMP3){
snd = new Audio(phrasesAudio[correct]);
}
else{
snd = new Audio(phrasesAudioOgg[correct]);
}
snd.play();
}
(文本替换了 div 的 HTML,我使用 .play() 作为音频对象)...通常可以正常工作(并且总是在“真实”浏览器中),但在 iPad 上(实际目标设备)在几次成功的迭代之后,TEXT 继续准确地进行,但 AUDIO 会打嗝并重复一个声音文件一次或多次。我添加了一些日志记录并在那里查看它报告它正在播放screw.mp3(只是一个示例,没有特定文件或多或少容易出错),但实际上它播放screwdriver.mp3(之前的文件,如果有错误,音频总是滞后,从不领先)...因此我认为问题出在我使用 .play() 上...所以我尝试在每个声音之间设置snd=null;,但没有任何改变...任何关于如何进行的建议?这是我第一次使用音频元素,因此不胜感激。谢谢。
编辑:我也尝试使用 snd.src 设置文件(基于https://wiki.mozilla.org/Audio_Data_API),这导致没有音频播放
【问题讨论】:
标签: javascript ios web-applications audio