Цей метод працює:
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, який я назвав "AudioPlus.js", який я включаю в свій html перед будь-яким сценарієм, який буде мати справу зі звуком.
Потім ви можете викликати функцію зупинки на аудіооб'єктах:
audio.stop();
НАСІЛЬНО ВИПУСК ХРОМУ З "Програмою":
Я не перевіряв це в усіх браузерах, але це проблема, яку я натрапив на Chrome. Якщо ви спробуєте встановити currentTime на аудіо, який має приєднаний до нього слухач подій "canplaythrough", тоді ви знову запустите цю подію, що може призвести до небажаних результатів.
Тож рішення, як і у всіх випадках, коли ви підключили слухач подій, який ви хочете переконатися, що він не спрацьовує знову, - це видалити слухача події після першого дзвінка. Щось на зразок цього:
//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 ...
});
БОНУС:
Зверніть увагу, що ви можете додати ще більше спеціальних методів до класу Audio (або будь-якого рідного класу javascript для цього питання).
Наприклад, якщо ви хотіли "перезапустити" метод, який перезапустив аудіо, він може виглядати приблизно так:
Audio.prototype.restart= function() {
this.pause();
this.currentTime = 0;
this.play();
};