【发布时间】:2012-01-05 16:31:51
【问题描述】:
我正在使用 HTML5 音频标签一个接一个地播放音频文件,但我的例程似乎使 Firefox 崩溃。它仅在我添加 alert() 时有效。
我在 PHP 中有一个例程,它每 2 秒检查一次是否有另一个应用程序向服务器发送了新事件,如果是,我在屏幕上写下新事件的名称。其中一些事件具有与之相关的音频文件(它们可以是不同的声音),因此当事件到达时,必须播放音频文件。
我有这个习惯:
当事件到达时,我调用这个函数:playSound(sound_name);
function playSound(sound_name){
if (!current_sound){
current_sound = true;
$("#audio-player")[0].src = "../snd/"+sound_name;
//$("#audio-player")[0].load();
$("#audio-player")[0].play();
}
else {
//alert(sound_name);
playSound(sound_name);
}
}
当 audio_player 触发音频标签的“结束”事件时,变量“current_sound”设置为 false。我为这个事件附加了一个函数,所以每次触发它时都会将变量 current_sound 设置为 false。
所有这些代码的问题在于它只适用于函数 playSound() 中的警报。如果我评论它,Firefox 会崩溃并开始说 js 脚本需要很长时间才能完成(他们的 js 脚本之一,不是我的)。
我搜索了很多,但我只找到了有关如何重现给定文件列表的示例,这在我的情况下没有用,因为我不知道会预先播放哪些文件。
有什么建议吗?
【问题讨论】:
-
这个问题的整个“audio”元素(和HTML5元素)可以被提取出来,这可以变成一个实际的Javascript问题。