触发警报时播放声音

时间:2014-02-16 18:11:13

标签: javascript

所以我在我的javascript中有一个if语句。当它返回true时,它会打开一个警告框并播放警报声。问题是在我按下确定按钮之前声音才会播放。

以下是相关信息:

  if (x > 10) {
        var snd = new Audio('/alarm.mp3');
        snd.play();
        alert("Thank you!");
    }

理想情况下,我希望播放大约6秒钟的声音,直到它结束或用户点击对话框结束。但是在关闭警报框之前真的让警报声响起就足够了。

5 个答案:

答案 0 :(得分:19)

预先在html中预加载音频文件,如:

<audio id="xyz" src="whatever_you_want.mp3" preload="auto"></audio>

if(x > 10)
{
    document.getElementById('xyz').play();
    alert("Thank you!");
}

这肯定会奏效。

答案 1 :(得分:1)

为什么不利用HTML5音频事件。

音频结束播放后会触发事件结束

snd.addEventListener('ended', showAlert);

function showAlert() {
 alert("YOUR MESSAGE");
}

答案 2 :(得分:1)

要发出快速而肮脏的哔哔声,您可以使用 this "beep" MP3。太恶心了。

这是一个工作示例:

var mp3_url = 'https://media.geeksforgeeks.org/wp-content/uploads/20190531135120/beep.mp3';

(new Audio(mp3_url)).play()

如果你想让它变得更加烦人(我需要一个伪寻呼机在预约空档打开时提醒自己),只需每秒重复一次哔哔声:

for (i=0; i<10; i++) {
  setTimeout(function(){(new Audio(mp3)).play()}, i * 1000)
}

这真是太可怕了,更糟糕的是字幕文本!如果你把那个“重复的哔哔声”代码片段放在一个真实的网页中,你就是一个坏人。不过,作为一个 hacky 寻呼机工作得很好。

答案 3 :(得分:0)

您可以尝试使用setTimeout()

if (x > 10) {
        var snd = new Audio('/alarm.mp3');
        snd.play();
        setTimeout(function(){alert("Thank you!")},6000);
    }

答案 4 :(得分:0)

您可以使用:

var snd = new Audio('/alarm.mp3');    
snd .onended = function () { alert("Thank you!"); };
snd .play();