为什么一个新的音频文件开始播放,如果一个已经在播放?(JS)
Why does a new audio file start playing if one is already playing? (JS)
我不知道为什么,但我不明白为什么这不起作用。我已经坐了几个小时,尝试了不同的方法,阅读和观看了关于这个主题的视频,但我仍然不明白。
Q:为什么每次我点击元素时,一个"新"音频文件开始播放,与前一个重叠?难道我的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();
}
}
如何解决这个问题?提前感谢!
你似乎每次点击都在创建一个新的音频元素。
尝试只初始化一次:(attn, quick'n'dirty!)
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();
}
}
就像@frontend_dev说的,你的问题之一是变量范围,其他是你正在检查使用sEE0.duration
,但这会给你音频文件的长度,这必然比0
大,可能这就是为什么它不玩,你要找的是currentTime
,如果条件应该是if (sEE0.duration > 0) {
,
但我更喜欢检查音频是否正在播放或暂停,而不是检查音频播放的哪个部分(除非用例需要)
我将把代码重写为:
document.getElementById("chatWrapper").addEventListener("click", playSound);
var sEE0 = new Audio('../sound/00-menu-music.mp3');
sEE0.volume = 0.2;
function playSound() {
//alert("Success!");
if (sEE0.paused) {
sEE0.play();
}
}
相关文章:
- 制作一个不带HTML a标记但在动画播放完毕后指向其他页面的超链接
- 我可以共享一个HTML播放器吗
- Wordpress在播放器旁边播放一个自定义的下载按钮,而不是下载
- 你能用sound.js在播放声音文件后5秒执行一个动作吗
- jQuery:在for循环中运行youtube视频,播放最后一个视频
- 播放音频时创建一个跳动的圆圈
- 我正在尝试一个接一个地播放一个 mp3 文件(一个作为介绍),但它不起作用.我该怎么做
- 在 html 页面上一次播放一个视频
- 使用 Javascript/jQuery 一次播放一个 HTML 音频文件
- 随机HMTL5视频阵列只播放一个视频
- Meteor.js:当有人在一个简单的聊天应用程序中收到消息时,我想播放一个声音
- 如何使用
- 用buzz.js播放一个又一个声音
- 如何允许在页面上只播放一个嵌入的YouTube视频
- 如何使2个YouTube视频自动播放一个接一个
- HTML自动播放一个视频然后循环另一个
- 如何播放一个声音不止一次的按钮点击
- 2个音频,我想一次只播放一个HTML5音频元素
- 在另一个声音中的某个点播放一个声音
- 播放一个简单的声音与web音频api