关于javascript:iPad上的JS .play()播放错误的文件…建议?

JS .play() on iPad plays wrong file…suggestions?

因此,我正在构建一个Web应用程序,该应用程序的div的文本会随着各种用户操作而变化(它会逐步浏览一系列文本)。我正在尝试向其中添加音频,所以我制作了另一个数组,将声音文件放置在适当的位置:

1
2
var phrases=['Please hand me the awl.','etc1','etc2','etc3'];
var phrasesAudio=['awl.mp3','etc1.mp3','etc2.mp3','etc3.mp3'];

在每次操作完成后,都会增加一个\\'counter \\'变量,并且每个数组在该计数器处寻找对象

1
2
3
4
5
6
7
8
9
10
11
12
13
14
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会打cup并重复一个或多个声音文件。我添加了一些日志记录,并查看那里报告它正在播放screw.mp3(仅作为示例,没有特定文件或多或少容易出错),但实际上,它正在播放screwdriver.mp3(先前的文件,如果有的话)一个错误,音频总是滞后,从不领先)...因为这个原因,我认为问题出在我使用.play()...所以我尝试在每个声音之间设置snd=null;,但没有改变。 ..关于如何进行的任何建议?这是我第一次使用音频元素,因此请多多指教。谢谢。

编辑:我也尝试使用snd.src设置文件(基于https://wiki.mozilla.org/Audio_Data_API),这导致没有音频播放


对于iPad,您需要在snd.play()之前致电snd.load()-否则您将获得"奇数"行为...

请参阅以获取一些见解:
http://jnjnjn.com/187/playing-audio-on-the-ipad-with-html5-and-javascript/
使用HTML5

在iPad上自动播放音频文件

编辑-根据OP的评论:

此处https://developer.mozilla.org/zh-CN/Using_audio_and_video_in_Firefox,您可以找到有关使用

暂停当前正在播放的媒体的提示

1
2
3
var mediaElement = document.getElementById("myMediaElementID");
mediaElement.pause();
mediaElement.src ="";

,然后设置正确的srcload()play()效果很好