我不知道为什么,但我无法弄清楚为什么这不起作用。我已经坐了几个小时尝试不同的方法,阅读和观看关于这个主题的视频,但我仍然无法弄明白。
问:为什么每次点击元素时,“新”音频文件都会开始播放,重叠前一个音频文件?我的if语句不应该处理吗?
document.getElementById("chatWrapper").addEventListener("click", playSound);
function playSound() {
//alert("Success!");
var sEE0 = new Audio('../sound/00-menu-music.mp3');
sEE0.volume = 0.2;
if (sEE0.duration > 0) {
return;
} else {
sEE0.play();
}
}
我该如何解决这个问题? 提前谢谢!
答案 0 :(得分:0)
每次点击时,您似乎都在创建新的音频元素。
尝试只将其初始化一次:(对,快速' n'脏!)
document.getElementById("chatWrapper").addEventListener("click", playSound);
var sEE0 = new Audio('../sound/00-menu-music.mp3');
function playSound() {
//alert("Success!");
sEE0.volume = 0.2;
if (sEE0.duration > 0) {
return;
} else {
sEE0.play();
}
}
答案 1 :(得分:0)
sEE0.duration
进行检查,但这会给你音频文件的长度,它必然大于{{ 1}},可能就是为什么它没有播放,你要找的是0
,if条件应该是currentTime
,
但我更愿意检查音频是播放还是暂停,而不是检查音频播放的部分(除非用例要求)
我会将代码重写为:
if (sEE0.duration > 0) {