JavaScript:شنونده رویداد در HTML DOM جاوااسکریپت

از ویکی کد
پرش به ناوبری پرش به جستجو
دورهٔ آموزشی جاوااسکریپت
Javascript.jpg
جاوااسکریپت
موارد آموزشی
۱آموزش جاوااسکریپت
۲مقدمه‌ای بر جاوااسکریپت
۳JavaScript:قوانین و اصول اولیه زبان جاوااسکریپت
۴JavaScript:خروجی جاوااسکریپت
۵JavaScript:عبارت‌ها در جاوااسکریپت
۶JavaScript:شیوهٔ نوشتن (Syntax) عبارات یا دستورات در جاوااسکریپت
۷JavaScript:نظرات یا کامنت‌ها (Comments) در جاوااسکریپت
۸JavaScript:متغیرها در جاوااسکریپت
۹JavaScript:عملگرهای جاوااسکریپت
۱۰JavaScript:عملگرهای ریاضی در جاوااسکریپت
۱۱JavaScript:عملگرهای مقداردهی در جاوااسکریپت
۱۲JavaScript:انواع داده‌ها در جاوااسکریپت
۱۳JavaScript:توابع در جاوااسکریپت
۱۴JavaScript:اشیاء (object) در جاوااسکریپت
۱۵JavaScript:رویدادها در جاوااسکریپت
۱۶JavaScript:رشته‌های متنی (string) در جاوااسکریپت
۱۷JavaScript:متدهای نوع داده متنی یا رشته‌ای در جاوااسکریپت
۱۸JavaScript:اعداد در جاوااسکریپت
۱۹JavaScript:متدهای داده‌های عددی در جاوااسکریپت
۲۰JavaScript:آرایه‌ها در جاوااسکریپت
۲۱JavaScript:متدهای آرایه در جاوااسکریپت
۲۲JavaScript:مرتب‌سازی آرایه‌ها در جاوااسکریپت
۲۳JavaScript:متدهای پیمایش آرایه در جاوااسکریپت
۲۴JavaScript:اشیاء تاریخ و زمان در جاوااسکریپت
۲۵JavaScript:فرمت‌های تاریخ و زمان در جاوااسکریپت
۲۶JavaScript:متدهای دریافت تاریخ و زمان در جاوااسکریپت
۲۷JavaScript:متدهای تنظیم زمان و تاریخ در جاوااسکریپت
۲۸JavaScript:شی ریاضی (Math) در جاوااسکریپت
۲۹JavaScript:ایجاد عدد تصادفی در جاوااسکریپت
۳۰JavaScript:مقادیر بولین (Booleans) در جاوااسکریپت
۳۱JavaScript:عملگرهای منطقی و مقایسه‌ای در جاوااسکریپت
۳۲JavaScript:ساختار if else و else if در جاوااسکریپت
۳۳JavaScript:تکه کد Switch در جاوا اسکریپت
۳۴JavaScript:حلقه For در جاوااسکریپت
۳۵JavaScript:حلقه While در جاوااسکریپت
۳۶JavaScript:کلمات کلیدی Break و Continue در جاوااسکریپت
۳۷JavaScript:تبدیل نوع داده‌ها در جاوااسکریپت
۳۸JavaScript:عملیات‌های بیتی در جاوااسکریپت
۳۹JavaScript:عبارات با قاعده در جاوااسکریپت
۴۰JavaScript:خطاها در جاوااسکریپت - رخ دادن خطا و رفع آن
۴۱JavaScript:Scope در جاوااسکریپت
۴۲JavaScript:Hoisting یا جا به جایی کدها در جاوااسکریپت
۴۳JavaScript:استفاده از مد یا حالت سخت‌گیرانه (use strict) در جاوااسکریپت
۴۴JavaScript:کلمه کلیدی This در جاوااسکریپت
۴۵JavaScript:کلمه کلیدی Let در جاوااسکریپت
۴۶JavaScript:ثابت‌ها در جاوااسکریپت
۴۷JavaScript:تعریف توابع به صورت پیکان
۴۸JavaScript:کلاس‌ها در جاوااسکریپت
۴۹JavaScript:اشکال‌زدایی در جاوااسکریپت
۵۰JavaScript:راهنمای استایل و استانداردهای کدنویسی در جاوااسکریپت
۵۱JavaScript:بهترین تمرینات جاوااسکریپت
۵۲JavaScript:اشتباهات رایج در برنامه‌نویسی جاوااسکریپت
۵۳JavaScript:کارایی در جاوااسکریپت
۵۴JavaScript:کلمات رزرو شده در جاوااسکریپت
۵۵JavaScript:ورژن‌های جاوااسکریپت
۵۶JavaScript:ECMAScript 5 - JavaScript 5
۵۷JavaScript:ECMAScript 6 - ECMAScript 2015
۵۸JavaScript:جیسون (JSON) در جاوااسکریپت
فرم‌ها
۱JavaScript:فرم‌ها در جاوااسکریپت
۲JavaScript:API ارزشیابی در جاوااسکریپت
اشیاء (Object)
۱JavaScript:اشیاء در جاوااسکریپت
۲JavaScript:ویژگی‌های اشیاء در جاوااسکریپت
۳JavaScript:متدهای اشیاء در جاوااسکریپت
۴JavaScript:روش‌های دسترسی به شیء در جاوااسکریپت
۵JavaScript:سازنده‌های شیء در جاوااسکریپت
۶JavaScript:شکل اصلی شیء در جاوااسکریپت
۷JavaScript:متدهای شیء در ورژن ES5 جاوااسکریپت
تابع
۱JavaScript:تعریف تابع در جاوااسکریپت
۲JavaScript:پارامتر توابع در جاوااسکریپت
۳JavaScript:فراخوانی تابع در جاوااسکریپت
۴JavaScript:صدا کردن تابع در جاوااسکریپت
۵JavaScript:تابع Apply در جاوااسکریپت
۶JavaScript:بسته‌ها (به انگلیسی: Closures) در جاوااسکریپت
HTML DOM
۱JavaScript:HTML DOM در جاوااسکریپت
۲JavaScript:متدهای HTML DOM در جاوااسکریپت
۳JavaScript:HTML DOM Document در جاوااسکریپت
۴JavaScript:عناصر HTML DOM در جاوااسکریپت
۵JavaScript:HTML DOM در جاوااسکریپت - تغییر محتوای HTML
۶JavaScript:DOM در جاوااسکریپت - تغییر CSS
۷JavaScript:انیمیشن در HTML DOM جاوااسکریپت
۸JavaScript:رویدادها در HTML DOM جاوااسکریپت
۹JavaScript:شنونده رویداد در HTML DOM جاوااسکریپت
۱۰JavaScript:پیمایش در HTML DOM جاوااسکریپت
۱۱JavaScript:عناصر (گره‌ها) HTML DOM در جاوااسکریپت
۱۲JavaScript:مجموعه‌های HTML DOM جاوااسکریپت
۱۳JavaScript:لیست گره‌ها در HTML DOM جاوااسکریپت
Browser BOM
۱JavaScript:پنجره جاوااسکریپت - مدل شیء مرورگر
۲JavaScript:پنجره صفحه نمایش در جاوااسکریپت
۳JavaScript:موقعیت پنجره در جاوااسکریپت
۴JavaScript:تاریخچه پنجره در جاوااسکریپت
۵JavaScript:ناوبری پنجره در جاوااسکریپت
۶JavaScript:جعبه پیغام جاوااسکریپت
۷JavaScript:رویدادهای زمان‌بندی شده در جاوااسکریپت
۸JavaScript:کوکی‌های جاوااسکریپت
AJAX
۱JavaScript:مقدمه‌ای بر AJAX
۲JavaScript:AJAX - شیء XMLHttpRequest
۳JavaScript:AJAX - ارسال یک درخواست به سرور
۴JavaScript:AJAX - پاسخ سرور
۵JavaScript:مثال‌های XML در AJAX
۶JavaScript:مثال‌های PHP در AJAX
۷JavaScript:مثال‌های ASP در AJAX
۸JavaScript:مثال پایگاه داده در AJAX
۹JavaScript:نرم‌افزارهای XML
۱۰JavaScript:مثال‌های AJAX
JSON
۱JavaScript:مقدمه‌ای بر JSON
۲JavaScript:شیوهٔ نوشتار JSON
۳JavaScript:JSON در برابر XML
۴JavaScript:انواع داده‌های مجاز در JSON
۵متد JSON.parse()
۶متد JSON.stringify()
۷JavaScript:اشیاء JSON
۸JavaScript:آرایه‌ها در JSON
۹JavaScript:PHP در JSON
۱۰JavaScript:HTML در JSON
۱۱JavaScript:JSONP
jQuery
۱JavaScript:جاوااسکریپت / انتخابگرهای DOM جی‌کوئری
۲JavaScript:جاوااسکریپت / عناصر HTML جی‌کوئری
۳JavaScript:جاوااسکریپت / استایل‌های CSS در جی‌کوئری
۴JavaScript:جاوااسکریپت / HTML DOM در جی‌کوئری

متد addEventListener()

مثال

یک شنونده رویداد (به انگلیسی: Event listener) را برای زمانی که کاربر روی یک دکمه کلیک می‌کند اضافه می‌کند:[۱]

document.getElementById("myBtn").addEventListener("click", displayDate);

متدaddEventListener()یک مدیریت کننده رویداد را به یک عنصر به خصوص متصل می‌کند.

متدaddEventListener()یک مدیریت کننده رویداد را به یک عنصر بدون بازنویسی مدیریت کننده رویداد موجود، متصل می‌کند.

شما می‌توانید چندین مدیریت کننده رویداد به یک عنصر اضافه کنید.

شما می‌توانید چندین مدیریت کننده رویداد از یک نوع به به عنصر اضافه کنید، برای مثال دو رویداد "click" برای کنترل.

شما می‌توانید مدیریت کننده رویدادها را نه‌تنها برای عناصر HTML بلکه برای هر شیء DOM اضافه کنید.

متدaddEventListener()نحوه واکنش به رویدادها را آسان‌تر می‌کند.

زمانی که از متدaddEventListener()استفاده می‌کنید، جاوااسکریپت جدای از زبان نشانه گذاری HTML، برای خوانایی بهتر به شما اجازه می‌دهد که شنونده رویداد (به انگلیسی: event listeners) را حتی در صورتی که رویداد را در زبان نشانه گذاری HTML کنترل نکردید، به کنترل اضافه کنید.

شما به راحتی می‌توانید یک شنونده رویداد را با استفاده از متدremoveEventListener()پاک کنید.

شیوه نوشتار

element.addEventListener(event, function, useCapture);

پارامتر اول نوع رویداد است (همانند "click" یا "mousedown" یا هر رویداد دیگری در HTML DOM.)


پارامتر دوم تابعی است که ما می‌خواهیم زمانی که رویداد رخداد آن را فراخوانی کنیم.


پارامتر سوم یک مقدار منطقی (به انگلیسی: boolean) است که مشخص می‌کند که از کدامیک از روشهای event bubbilng یا از event capturing استفاده شود. این پارامتر اختیاری است.


اضافه کردن یک مدیریت کننده رویداد (به انگلیسی: Event Handler) به یک عنصر

مثال

پیغام "Hello World" را زمانی که کاربر روی یک عنصر کلیک می‌کند را به صورت یک هشدار (به انگلیسی: alert) نمایش می‌دهد.

element.addEventListener("click", function(){ alert("Hello World!"); });

شما همچنین می‌توانید به یک تابع “نامگذاری ”شدهٔ خارجی اشاره کنید:

مثال

پیغام "Hello World" را زمانی که کاربر روی یک عنصر کلیک می‌کند را به صورت یک هشدار (به انگلیسی: alert) نمایش می‌دهد.

element.addEventListener("click", myFunction);

function myFunction() {
  alert ("Hello World!");
}

اضافه کردن چندین مدیریت کننده رویداد به یک عنصر مشترک

متدaddEventListener()به شما اجازه می‌دهد که چندین رویداد را به یک عنصر مشترک بدون بازنویسی یا تغییر رویداد موجود، اضافه کنید:

مثال

element.addEventListener("click", myFunction);
element.addEventListener("click", mySecondFunction);

شما می‌توانید چندین رویداد از نوع‌های مختلف به یک عنصر مشترک اضافه کنید:

مثال

element.addEventListener("mouseover", myFunction);
element.addEventListener("click", mySecondFunction);
element.addEventListener("mouseout", myThirdFunction);

اضافه کردن یک مدیریت کننده رویداد به شیء پنجره (به انگلیسی: window Object)

متدaddEventListener()به شما اجازه می‌دهد که شنونده رویداد (به انگلیسی: Event listener) را روی هر شیء HTML DOM مانند عناصر HTML، سند HTML، شیء پنجره (به انگلیسی: window object) یا هر شیء مانند شیءxmlHttpRequestکه از رویداد پشتیبانی کند، اضافه کنید.

مثال

اضافه کردن یک شنونده رویداد برای زمانی که کاربر پنجره را resize (به فارسی: اندازه صفحه را تغییر دادن) کند اضافه شده‌است:

window.addEventListener("resize", function(){
  document.getElementById("demo").innerHTML = sometext;
});

پاس دادن پارامترها

زمانی که مقدار پارامترها را پاس می‌دهید، از یک تابع بدون نام (به انگلیسی: "anonymous function") که یک تابع به خصوص را با پارامترها فراخوانی می‌کند، استفاده کنید:

مثال

element.addEventListener("click", function(){ myFunction(p1, p2); });

Event Bubbling یا Event Capturing

دو روش برای گسترش رویداد در HTML DOM وجود دارد:

  • bubbling
  • capturing

گسترش رویداد راهی برای تعریف نقش عنصر در زمانی که یک رویداد رخ می‌دهد است. اگر شما یک عنصر<p>درون یک عنصر<div>دارید، و کاربر روی عنصر<p>کلیک می‌کند، رویداد کدام یک از مدیریت کننده رویدادها می‌بایست اول اجرا شود؟


در bubbling رویداد درونی‌ترین عنصر ابتدا مدیریت می‌شود و سپس رویداد سایر کنترل‌های بیرون کنترل می‌شود. رویداد کلیک عنصر<p>ابتدا اجرا می‌گردد و سپس رویداد کلیک عنصر<div>اجرا می‌شود.


در Capturing رویداد بیرونی‌ترین عنصر ابتدا اجرا می‌گردد و سپس رویداد عناصر داخلی مدیریت می‌شود: رویداد کلیک عنصر<div>ابتدا مدیریت می‌شود و سپس رویداد کلیک عنصر<p>مدیریت می‌شود.


با استفاده از متدaddEventListener()ما می‌توانیم نوع مدیریت رویداد را با استفاده از پارامتر "usecapture" تعیین کنیم:

addEventListener(event, function, useCapture);

مقدار پیشفرض برابر با مقدار false است که موجب استفاده از روش bubbling می‌شود، زمانی که این پارامتر مقدار true داشته باشد، مدیریت رویدادها به روش capturing صورت می‌گیرد.

مثال

document.getElementById("myP").addEventListener("click", myFunction, true);
document.getElementById("myDiv").addEventListener("click", myFunction, true);

متد removeEventListener()

متدremoveEventListener()مدیریت رویداد کننده‌هایی که به وسیلهٔ متدaddEventListener()به کنترل متصل شده‌است را پاک می‌کند:

مثال

element.removeEventListener("mousemove", myFunction);

سازگاری با مرورگرها

میانبر:
الگو:اج


اعداد موجود در جدول زیر، مشخص کننده اولین ورژن مرورگرهایی است که از این متدها پشتیبانی می‌کند.

اپرا سافاری فایرفاکس IE/Edge کروم متد
۷٫۰ ۱٫۰ ۱٫۰ ۹٫۰ ۱٫۰ addEventListener()
۷٫۰ ۱٫۰ ۱٫۰ ۹٫۰ ۱٫۰ removeEventListener()

نکته: متد هایaddEventListener()وremoveEventListener()در ورژن ۸ از مرورگر IE و ورژن‌های قدیمی تر پشتیبانی نمی‌شود. اما برای مرورگرها با این ورژن بخصوص، شما می‌توانید از متدattachEvent()برای اتصال یک مدیریت کننده رویداد برای یک عنصر و از متدdetachEvent()برای حذف آن استفاده کنید:

element.attachEvent(event, function);
element.detachEvent(event, function);
میانبر:
الگو:اتب

Cross-browser solution:

مثال

var x = document.getElementById("myBtn");
if (x.addEventListener) {     // For all major browsers, except IE 8 and earlier
  x.addEventListener("click", myFunction);
} else if (x.attachEvent) {   // For IE 8 and earlier versions
  x.attachEvent("onclick", myFunction);
}

مرجع شیء رویداد در HTML DOM (به انگلیسی: HTML DOM Event Object)

برای مشاهده لیست کاملی از رویدادهای HTML DOM درجاوااسکریپت، به مقاله کامل ما تحت عنوان مرجع شیء HTML DOM در جاوااسکریپت نگاهی بیندازید.

منابع آموزشی