পরিভাষা
Quirksmode.org থেকে :
ইভেন্ট ক্যাপচারিং
আপনি ইভেন্ট ক্যাপচার ব্যবহার যখন
| |
--------------- | | -----------------
| উপাদান 1 | | |
| ----------- | | ----------- |
| | এলিমেন্ট 2 | / | |
| ------------------------- |
| ইভেন্ট ক্যাপচার |
-----------------------------------
এলিমেন্ট 1 এর ইভেন্ট হ্যান্ডলারটি প্রথমে আগুন দেয়, ইভেন্ট 2 এর আগুনের হ্যান্ডলার শেষ অবধি।
ইভেন্ট বুদবুদ
আপনি যখন ইভেন্ট বুদবুদ ব্যবহার করবেন
/
--------------- | | -----------------
| উপাদান 1 | | |
| ----------- | | ----------- |
| | এলিমেন্ট 2 | | | |
| ------------------------- |
| ইভেন্ট বুবলিং |
-----------------------------------
এলিমেন্ট 2 এর ইভেন্ট হ্যান্ডলারটি প্রথমে আগুন দেয়, ইভেন্ট 1 হ'ল এলেন্ডার শেষ অবধি।
ডাব্লু 3 সি ইভেন্টের মডেলটিতে যে কোনও ইভেন্ট সংঘটিত হয় প্রথমে এটি ক্যাপচার করা হয় যতক্ষণ না এটি লক্ষ্য উপাদানটিতে পৌঁছায় এবং তারপরে আবার বুদবুদ হয়ে যায় ।
| | /
----------------- | | - | | -----------------
| উপাদান 1 | | | | |
| ------------- | | - | | ----------- |
| | এলিমেন্ট 2 | / | | | |
| -------------------------------- |
| ডাব্লু 3 সি ইভেন্ট মডেল |
------------------------------------------
ইন্টারফেস
ইভেন্ট ক্যাপচারের জন্য w3.org থেকে :
ক্যাপচারিং EventListenerইভেন্টটির আরও প্রক্রিয়াজাতকরণ ঘটতে বাধা দিতে চাইলে stopPropagationএটি Eventইন্টারফেসের পদ্ধতিতে
কল করতে পারে । এটি ইভেন্টটির আরও প্রেরণকে বাধা দেবে, যদিও EventListenersএকই শ্রেণিবিন্যাস পর্যায়ে অতিরিক্ত নিবন্ধিত এখনও ইভেন্টটি গ্রহণ করবে। কোনও ইভেন্টের stopPropagation
পদ্ধতিটি কল করার পরে, সেই পদ্ধতিতে আরও কলগুলি কোনও অতিরিক্ত প্রভাব ফেলবে না। যদি কোনও অতিরিক্ত ক্যাপচারার উপস্থিত stopPropagationনা থাকে এবং তাদের ডাকা না হয়, ইভেন্টটি EventListenersলক্ষ্যমাত্রায় উপযুক্তটিকে
ট্রিগার করে।
জন্য ঘটনা সাড়া জাগানো :
যে কোনও ইভেন্ট হ্যান্ডলার ইন্টারফেসের stopPropagationপদ্ধতিতে কল করে আরও ইভেন্টের প্রচার রোধ করতে বেছে নিতে পারে Event। যদি কোনও
EventListenerএই পদ্ধতিতে কল EventListenersকরে তবে বর্তমানের সমস্ত অতিরিক্ত EventTargetট্রিগার করা হবে তবে বুবলিং সেই স্তরে থামবে। stopPropagationআরও বুদবুদ ঠেকাতে কেবল একটি কল করতে হবে।
জন্য ইভেন্ট বাতিল :
Eventএর preventDefault
পদ্ধতিটি কল করে ক্যানসেলেশন সম্পন্ন হয় । ইভেন্ট প্রবাহের যে কোনও পর্যায়ে এক বা একাধিক EventListenersকল preventDefaultহলে ডিফল্ট ক্রিয়া বাতিল হয়ে যাবে।
উদাহরণ
নিম্নলিখিত উদাহরণগুলিতে, ওয়েব ব্রাউজারে হাইপারলিংকের একটি ক্লিক ইভেন্টের প্রবাহকে ট্রিগার করে (ইভেন্ট শ্রোতাদের মৃত্যুদন্ড কার্যকর করা হয়) এবং ইভেন্ট টার্গেটের ডিফল্ট ক্রিয়া (একটি নতুন ট্যাব খোলা হয়)।
এইচটিএমএল:
<div id="a">
<a id="b" href="http://www.google.com/" target="_blank">Google</a>
</div>
<p id="c"></p>
javascript:
var el = document.getElementById("c");
function capturingOnClick1(ev) {
el.innerHTML += "DIV event capture<br>";
}
function capturingOnClick2(ev) {
el.innerHTML += "A event capture<br>";
}
function bubblingOnClick1(ev) {
el.innerHTML += "DIV event bubbling<br>";
}
function bubblingOnClick2(ev) {
el.innerHTML += "A event bubbling<br>";
}
// The 3rd parameter useCapture makes the event listener capturing (false by default)
document.getElementById("a").addEventListener("click", capturingOnClick1, true);
document.getElementById("b").addEventListener("click", capturingOnClick2, true);
document.getElementById("a").addEventListener("click", bubblingOnClick1, false);
document.getElementById("b").addEventListener("click", bubblingOnClick2, false);
উদাহরণ 1 : এটি ফলাফল আউটপুট
DIV event capture
A event capture
A event bubbling
DIV event bubbling
উদাহরণ 2 : stopPropagation()ফাংশনে যুক্ত করা
function capturingOnClick1(ev) {
el.innerHTML += "DIV event capture<br>";
ev.stopPropagation();
}
ফলাফল আউটপুট
DIV event capture
ইভেন্ট শ্রোতারা ইভেন্টটির আরও নীচে এবং wardর্ধ্বমুখী প্রচারকে বাধা দেয়। তবে এটি ডিফল্ট ক্রিয়া প্রতিরোধ করতে পারেনি (একটি নতুন ট্যাব খোলার)।
উদাহরণ 3 : stopPropagation()ফাংশনে যুক্ত করা
function capturingOnClick2(ev) {
el.innerHTML += "A event capture<br>";
ev.stopPropagation();
}
বা ফাংশন
function bubblingOnClick2(ev) {
el.innerHTML += "A event bubbling<br>";
ev.stopPropagation();
}
ফলাফল আউটপুট
DIV event capture
A event capture
A event bubbling
এটি কারণ উভয় ইভেন্ট শ্রোতা একই ইভেন্ট টার্গেটে নিবন্ধভুক্ত। ইভেন্ট শ্রোতারা ইভেন্টটির আরও wardর্ধ্বমুখী প্রচারকে বাধা দেয়। তবে তারা ডিফল্ট ক্রিয়া (একটি নতুন ট্যাব খোলার) আটকাতে পারেনি।
উদাহরণ 4 : preventDefault()উদাহরণস্বরূপ কোনও ফাংশনে যুক্ত করা
function capturingOnClick1(ev) {
el.innerHTML += "DIV event capture<br>";
ev.preventDefault();
}
নতুন ট্যাব খুলতে বাধা দেয়।
event.stopফাংশনে উভয়ই করে ... এছাড়াও অদ্ভুত আমার কোনও সমস্যা হয়নি। আমি প্রচুর বুদবুদ ব্যবহার করি। উদাহরণের জন্য ধন্যবাদ!