Metode ini berfungsi:
audio.pause();
audio.currentTime = 0;
Tetapi jika Anda tidak ingin harus menulis dua baris kode ini setiap kali Anda menghentikan audio Anda bisa melakukan salah satu dari dua hal ini. Yang kedua menurut saya adalah yang lebih tepat dan saya tidak yakin mengapa "para dewa standar javascript" belum membuat standar ini.
Metode pertama: buat fungsi dan berikan audio
function stopAudio(audio) {
audio.pause();
audio.currentTime = 0;
}
//then using it:
stopAudio(audio);
Metode kedua (disukai): memperpanjang kelas Audio:
Audio.prototype.stop = function() {
this.pause();
this.currentTime = 0;
};
Saya memiliki ini dalam file javascript yang saya sebut "AudioPlus.js" yang saya sertakan dalam html saya sebelum skrip apa pun yang akan berurusan dengan audio.
Kemudian Anda dapat memanggil fungsi berhenti pada objek audio:
audio.stop();
AKHIRNYA CHROME MASALAH DENGAN "canplaythrough":
Saya belum menguji ini di semua browser tetapi ini adalah masalah yang saya temui di Chrome. Jika Anda mencoba untuk mengatur currentTime pada audio yang memiliki pendengar acara "canplaythrough" yang terpasang padanya maka Anda akan memicu peristiwa itu lagi yang dapat menyebabkan hasil yang tidak diinginkan.
Jadi solusinya, mirip dengan semua kasus ketika Anda telah melampirkan pendengar acara yang Anda benar-benar ingin memastikan itu tidak dipicu lagi, adalah menghapus pendengar acara setelah panggilan pertama. Sesuatu seperti ini:
//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 ...
});
BONUS:
Perhatikan bahwa Anda dapat menambahkan lebih banyak metode khusus ke kelas Audio (atau kelas javascript asli apa pun dalam hal ini).
Misalnya, jika Anda menginginkan metode "mulai ulang" yang memulai kembali audio, ia akan terlihat seperti:
Audio.prototype.restart= function() {
this.pause();
this.currentTime = 0;
this.play();
};