यह विधि काम करती है:
audio.pause();
audio.currentTime = 0;
लेकिन अगर आप कोड की इन दो पंक्तियों को हर बार लिखना नहीं चाहते हैं तो आप एक ऑडियो को रोक सकते हैं जो आप दो चीजों में से एक कर सकते हैं। दूसरा मुझे लगता है कि यह अधिक उपयुक्त है और मुझे यकीन नहीं है कि "जावास्क्रिप्ट मानकों के देवताओं" ने यह मानक क्यों नहीं बनाया है।
पहला तरीका: एक फंक्शन बनाएं और ऑडियो पास करें
function stopAudio(audio) {
audio.pause();
audio.currentTime = 0;
}
//then using it:
stopAudio(audio);
दूसरी विधि (इष्ट): ऑडियो वर्ग का विस्तार करें:
Audio.prototype.stop = function() {
this.pause();
this.currentTime = 0;
};
मेरे पास यह एक जावास्क्रिप्ट फ़ाइल है जिसे मैंने "AudioPlus.js" कहा है, जिसे मैं अपने html में किसी भी स्क्रिप्ट से पहले शामिल करता हूं जो ऑडियो के साथ काम करेगा।
तब आप ऑडियो ऑब्जेक्ट पर स्टॉप फ़ंक्शन को कॉल कर सकते हैं:
audio.stop();
"कैनप्थ्रिथ" के साथ अंतिम रूप से चार्ली ISSUE:
मैंने सभी ब्राउज़रों में इसका परीक्षण नहीं किया है लेकिन यह एक ऐसी समस्या है जो मुझे क्रोम में आई। यदि आप ऐसे ऑडियो को करंट टाइम सेट करने का प्रयास करते हैं, जिसमें "कैनप्थ्रिथ" ईवेंट श्रोता है, तो आप उस ईवेंट को फिर से ट्रिगर करेंगे, जिससे अवांछनीय परिणाम हो सकते हैं।
इसलिए, सभी मामलों के समान समाधान, जब आपने एक इवेंट श्रोता को संलग्न किया है जिसे आप वास्तव में सुनिश्चित करना चाहते हैं कि यह फिर से चालू न हो, तो पहली कॉल के बाद ईवेंट श्रोता को हटा देना है। कुछ इस तरह:
//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.prototype.restart= function() {
this.pause();
this.currentTime = 0;
this.play();
};