此方法效果:
audio.pause();
audio.currentTime = 0;
但是,如果你不想在每次停止播放音频时的这两行代码来写,你可以做两件事情之一。第二个我认为是更合适的,我不确定为什么“JavaScript标准的众神”没有制定这个标准。
第一种方法:创建一个函数并通过音频
function stopAudio(audio) {
audio.pause();
audio.currentTime = 0;
}
//then using it:
stopAudio(audio);
第二种方法(看好):扩展音频类:
Audio.prototype.stop = function() {
this.pause();
this.currentTime = 0;
};
我有这个JavaScript文件我在任何将处理音频的脚本之前调用了包含在我的html中的“AudioPlus.js”。
然后,你可以调用停止功能的音频对象:
audio.stop();
FINALLY CHROME发出带有“canplaythrough”:
我还没有在所有的浏览器测试了这个,但是这是一个问题,我在Chrome中遇到过。如果您尝试在连接了“canplaythrough”事件侦听器的音频上设置currentTime,那么您将再次触发该事件,这可能会导致不良结果。
因此,类似于所有附加事件侦听器的情况下,您确实不会再次触发它的解决方案是在第一次调用后删除事件侦听器。事情是这样的:
//note using jquery to attach the event. You can use plain javascript as well of course.
$(audio).on("canplaythrough", function() {
$(this).off("canplaythrough");
// rest of the code ...
});
奖金:
注意,您可以添加更多的自定义方法的音频类(或与此有关的任何本地JavaScript类)。
例如,如果你想要一个“重启”方法重新启动音频它可能看起来像:
Audio.prototype.restart= function() {
this.pause();
this.currentTime = 0;
this.play();
};