script.aculo.us এবং ইভেন্ট লিসেনার
script.aculo.us একটি JavaScript লাইব্রেরি যা DOM ম্যানিপুলেশন, ইন্টারঅ্যাকটিভ UI উপাদান, এবং Ajax সমর্থন প্রদান করে। এটি Prototype.js লাইব্রেরির উপরে নির্মিত এবং পুরনো ওয়েব অ্যাপ্লিকেশনগুলিতে রিচ ইউজার ইন্টারফেস উপাদান যোগ করার জন্য ব্যবহৃত হয়ে থাকে। script.aculo.us অনেক ধরনের DOM ইফেক্ট তৈরি করতে সহায়তা করে, যেমন ড্র্যাগ অ্যান্ড ড্রপ, স্লাইডিং, ট্যাবস, ইত্যাদি।
একটি সাধারণ ওয়েব অ্যাপ্লিকেশন বা পেজে, আপনাকে প্রায়শই বিভিন্ন ইভেন্ট হ্যান্ডলার বা ইভেন্ট লিসেনার যোগ করতে হয়। এই লিসেনারগুলি ব্যবহারকারী দ্বারা ঘটে যাওয়া বিভিন্ন ইভেন্ট যেমন click, mouseover, keydown, ইত্যাদি সনাক্ত করতে সাহায্য করে।
script.aculo.us লাইব্রেরি ব্যবহার করে ইভেন্ট লিসেনার যোগ করা এবং মুছে ফেলা সহজ। এই লাইব্রেরি, Event.observe() এবং Event.stopObserving() ফাংশনগুলির মাধ্যমে ইভেন্ট লিসেনার যোগ এবং মুছে ফেলা সাপোর্ট করে।
ইভেন্ট লিসেনার যোগ করা
Event.observe() ফাংশনটি ইভেন্ট লিসেনার যোগ করার জন্য ব্যবহৃত হয়। এটি একটি নির্দিষ্ট DOM উপাদানের উপর একটি ইভেন্ট লিসেনার নিবন্ধন করে এবং যখন সেই ইভেন্টটি ঘটবে, তখন নির্দিষ্ট ফাংশনটি কার্যকর হবে।
সিনট্যাক্স:
Event.observe(element, event, handler, useCapture);
element: DOM উপাদান যা ইভেন্ট লিসেনার গ্রহণ করবে।event: ইভেন্টের ধরন (যেমনclick,mouseover,keydown)।handler: ইভেন্টের সময় যেই ফাংশনটি চালানো হবে।useCapture: (ঐচ্ছিক) এটি বুলিয়ান ভ্যালু (যেমনtrueবাfalse) যা ইভেন্ট ক্যাপচারিং ব্যবহারের জন্য নির্ধারণ করে।
উদাহরণ:
ধরা যাক, আপনি একটি বাটনের উপর ক্লিক ইভেন্ট যোগ করতে চান:
var button = document.getElementById('myButton');
Event.observe(button, 'click', function() {
alert('Button clicked!');
});
এখানে, Event.observe() ফাংশনটি myButton নামে একটি বাটনে ক্লিক ইভেন্ট যোগ করছে। যখন ব্যবহারকারী বাটনে ক্লিক করবেন, তখন একটি এলার্ট বক্স প্রদর্শিত হবে।
ইভেন্ট লিসেনার মুছে ফেলা
ইভেন্ট লিসেনার মুছে ফেলার জন্য Event.stopObserving() ফাংশনটি ব্যবহার করা হয়। এটি নির্দিষ্ট একটি ইভেন্ট থেকে নিবন্ধিত হ্যান্ডলারটি মুছে ফেলে, যাতে সেই ইভেন্টটি আর ট্রিগার না হয়।
সিনট্যাক্স:
Event.stopObserving(element, event, handler);
element: DOM উপাদান যা থেকে ইভেন্ট লিসেনার মুছে ফেলা হবে।event: ইভেন্টের ধরন (যেমনclick,mouseover,keydown)।handler: যেই ফাংশনটি পূর্বে ইভেন্ট লিসেনার হিসেবে যোগ করা হয়েছিল।
উদাহরণ:
ধরা যাক, আপনি পূর্বে যোগ করা একটি click ইভেন্ট হ্যান্ডলার মুছে ফেলতে চান:
var button = document.getElementById('myButton');
function showMessage() {
alert('Button clicked!');
}
// ইভেন্ট লিসেনার যোগ করা
Event.observe(button, 'click', showMessage);
// ইভেন্ট লিসেনার মুছে ফেলা
Event.stopObserving(button, 'click', showMessage);
এখানে, প্রথমে Event.observe() দিয়ে একটি ক্লিক ইভেন্ট লিসেনার যোগ করা হয়েছে এবং তারপর Event.stopObserving() দিয়ে সেই ক্লিক ইভেন্ট হ্যান্ডলারটি মুছে ফেলা হয়েছে।
ইভেন্ট ক্যাপচারিং এবং বুবলিং
Event.observe() এবং Event.stopObserving() ফাংশনগুলি মূলত ইভেন্ট বুবলিং এর জন্য কাজ করে। যখন একটি ইভেন্ট ঘটে, তা প্রথমে লক্ষ্য করা উপাদান থেকে শুরু হয়ে তার পিতামাতার উপাদানে বুবল (পড়ে) আসে।
Event.observe() এর চতুর্থ আর্গুমেন্ট useCapture ব্যবহার করলে, আপনি ইভেন্ট ক্যাপচারিং করতে পারেন। ইভেন্ট ক্যাপচারিং হল, যখন একটি ইভেন্ট প্রথমে উপরের স্তরের (পিতামাতা) উপাদানে ধরা পড়ে এবং তারপর সন্তান উপাদানে পৌঁছায়।
উদাহরণ: ক্যাপচারিং এবং বুবলিং
var parent = document.getElementById('parent');
var child = document.getElementById('child');
// ক্যাপচারিং মোডে ইভেন্ট যোগ করা
Event.observe(parent, 'click', function() {
alert('Parent clicked during capture phase!');
}, true);
// বুবলিং মোডে ইভেন্ট যোগ করা
Event.observe(child, 'click', function() {
alert('Child clicked during bubbling phase!');
}, false);
এখানে, parent উপাদানে true সেট করে ইভেন্ট ক্যাপচারিং মোডে নিবন্ধিত করা হয়েছে, এবং child উপাদানে false সেট করে বুবলিং মোডে নিবন্ধিত করা হয়েছে।
সারাংশ
script.aculo.us লাইব্রেরি ব্যবহার করে ইভেন্ট লিসেনার যোগ এবং মুছে ফেলা অত্যন্ত সহজ। Event.observe() ব্যবহার করে আপনি DOM উপাদানের উপর ইভেন্ট লিসেনার যোগ করতে পারেন এবং Event.stopObserving() ব্যবহার করে সেই ইভেন্ট লিসেনার মুছে ফেলতে পারেন। এছাড়া, ইভেন্ট ক্যাপচারিং এবং বুবলিংয়ের মাধ্যমে আপনি ইভেন্ট ব্যবস্থাপনা আরও নিখুঁতভাবে পরিচালনা করতে পারেন। script.aculo.us এর মাধ্যমে ইভেন্ট লিসেনার ব্যবহার করতে সহজ এবং কার্যকরী একটি পদ্ধতি পাওয়া যায়, যা ওয়েব অ্যাপ্লিকেশন ডেভেলপমেন্টে সহায়ক।
Read more