Bu yöntem işe yarar:
audio.pause();
audio.currentTime = 0;
Ancak, bir sesi her durdurduğunuzda bu iki satırlık kodu yazmak zorunda kalmak istemiyorsanız, iki şeyden birini yapabilirsiniz. Bence ikincisi daha uygun olanı ve "javascript standartlarının tanrılarının" bu standardı neden oluşturmadıklarından emin değilim.
İlk yöntem: bir işlev oluşturun ve sesi iletin
function stopAudio(audio)
stopAudio(audio);
İkinci yöntem (tercih edilen): Audio sınıfını genişletin:
Audio.prototype.stop = function() {
this.pause();
this.currentTime = 0;
};
Bunu, sesle ilgilenecek herhangi bir komut dizisinden önce html'ime dahil ettiğim "AudioPlus.js" adlı bir javascript dosyasında buldum.
Ardından, ses nesnelerinde durdurma işlevini çağırabilirsiniz:
audio.stop();
"Canplaythrough" İLE SON KROM SORUNU:
Bunu tüm tarayıcılarda test etmedim ama bu Chrome'da karşılaştığım bir sorun. Bir "canplaythrough" olay dinleyicisi eklenmiş bir seste currentTime'ı ayarlamaya çalışırsanız, o olayı tekrar tetikleyerek istenmeyen sonuçlara yol açabilirsiniz.
Dolayısıyla, bir olay dinleyicisini eklediğinizde tekrar tetiklenmediğinden emin olmak istediğiniz tüm durumlara benzer çözüm, ilk çağrıdan sonra olay dinleyicisini kaldırmaktır. Bunun gibi bir şey:
$(audio).on("canplaythrough", function() {
$(this).off("canplaythrough");
});
BONUS:
Audio sınıfına (veya bu konuyla ilgili herhangi bir yerel javascript sınıfına) daha da fazla özel yöntem ekleyebileceğinizi unutmayın.
Örneğin, sesi yeniden başlatan bir "yeniden başlatma" yöntemi istiyorsanız, aşağıdaki gibi görünebilir:
Audio.prototype.restart= function() {
this.pause();
this.currentTime = 0;
this.play();
};