এই পদ্ধতিটি কাজ করে:
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;
};
আমার কাছে এটি একটি জাভাস্ক্রিপ্ট ফাইলে রয়েছে "অডিওপ্লাস.জেএস" যা আমি আমার এইচটিএমএলে অন্তর্ভুক্ত করি কোনও অডিওর সাথে কাজ করার জন্য কোনও স্ক্রিপ্টের আগে।
তারপরে আপনি অডিও অবজেক্টগুলিতে স্টপ ফাংশনটি কল করতে পারেন:
audio.stop();
"ক্যানপ্লেথ্রু" সহ শেষ ক্রোম ইস্যু:
আমি সমস্ত ব্রাউজারে এটি পরীক্ষা করে দেখিনি তবে এটি ক্রোমে এসেছিল এমন একটি সমস্যা। যদি আপনি কোনও অডিওতে কারেন্টটাইম সেট করার চেষ্টা করেন যা এর সাথে "ক্যানপ্লেথ্রু" ইভেন্ট শ্রোতা যুক্ত থাকে তবে আপনি সেই ইভেন্টটিকে আবার ট্রিগার করবেন যা অনাকাঙ্ক্ষিত ফলাফলের দিকে নিয়ে যেতে পারে।
সুতরাং সমাধানটি, আপনি যখন কোনও ইভেন্ট শ্রোতার সাথে সংযুক্ত করে থাকেন তখন একই রকম সমাধান যা আপনি সত্যিই নিশ্চিত করতে চান যে এটি আবার ট্রিগার নয় call প্রথম কলের পরে ইভেন্ট শ্রোতাকে অপসারণ করা। এটার মতো কিছু:
//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();
};