我有一段javascript,我正在播放这样的声音......
var audio = document.createElement('audio');
audio.src = 'folder/test.wav';
audio.play();
我需要播放多个间隔开的文件,以便您知道它的含义。 iOS不允许您使用setTimeout。我在单独的函数中尝试过,当使用setTimeout时,它无法从第二个音频剪辑中发出声音。还有其他想法吗?
修改
我有这个功能:
function playaudio(file) {
var audio = document.createElement('audio');
audio.src = 'folder/'+file+'.wav';
audio.play();
}
这样称呼它:
playaudio("test1");
playaudio("test2");
我需要它在test1和test1之间暂停,这样它们就不能一起玩了。有什么想法吗?
答案 0 :(得分:1)
您可以使用iOS Native代码触发Javascript方法调用:
[webViewObject stringByEvaluatingJavaScriptFromString:@"playNextSound();"];
其中playNextSound
是由UIWebView加载的页面中定义的JS方法。
而不是setTimeout,您可以使用NSTimer
使本机计时器空出音频播放。
答案 1 :(得分:0)
setTimeout()
适用于iOS。该问题可能与浏览器处理<audio>
和<video>
内容的方式有关。
iOS只会在用户输入触发时播放<audio>
和<video>
内容。你提到你的第一个剪辑的初始audio.play()
调用正常,所以我猜它是用户触发的。问题在于setTimeout()
clear the call stack内的功能,因此浏览器可能不再将其视为用户驱动,即使它们之前是点击事件。
最简单的解决方案是将多个音频剪辑合二为一。您也可以在开始时用静音填充想要延迟的片段,并在点击事件后立即播放它们(假设您的目标操作系统版本一次支持多个音频对象)