当满足条件时,我想播放通知声音(短促的哔哔声(x次,中间有x时间。我写了以下脚本:
function repeat(times) {
document.getElementById("alert").play();
if (--times > 0){
setTimeout(repeat(times), 3000);
// also tried this, but didnt work either
// setTimeout(document.getElementById("alert").play, 3000);
}
}
repeat(3)
在 Safari 调试器中签入时,没有错误并且 setTimeout 被触发,但在第一声哔哔声之后,听不到其他声音。(音频文件的长度约为 1 秒(
有人可以解释为什么它不起作用吗?
尽量使用短音,因为如果在上一个声音结束之前播放声音,第二个声音将被静音。
<script src="https://code.jquery.com/jquery-3.2.1.min.js" integrity="sha256-hwg4gsxgFZhOsEEamdOYGBf13FyQuiTwlAQgxVSNgt4=" crossorigin="anonymous"></script>
<audio id="sound">
<source src="alert.wav" type="audio/wav">
</audio>
<input type="text" id="times" value="5">
<button id="btn" type="button">Play Alert</button>
<script>
$(document).ready(function () {
var audio = new Audio("alert.wav");
let times = 0;
$("#btn").on("click", function() {
times = parseInt(document.getElementById("times").value);
playAudio();
});
playAudio = function() {
audio.play()
times --;
if (times) setTimeout(playAudio, 333);
}
});
</script>