برنامج الاستماع إلى أحداث HTML DOM - جافا سكريبت
طريقة addEventListener()
مثال
إضافة مستمع أحداث يُطلق عند ضغط المستخدم على الزر:
document.getElementById("myBtn").addEventListener("click", displayDate);
addEventListener()
يضيف هذا الطريقة معالج أحداث معين إلى العنصر المحدد.
addEventListener()
يضيف هذا الطريقة معالج أحداث إلى العنصر دون تغطية المعالجات الموجودة بالفعل.
يمكنك إضافة عدة معالجات أحداث إلى عنصر واحد.
يمكنك إضافة عدة معالجات أحداث من نفس النوع إلى العنصر نفسه، مثل اثنين من أحداث "click".
يمكنك إضافة معالج الحدث إلى أي عنصر DOM وليس العناصر HTML فقط، مثل window.
addEventListener()
يجعل من السهل التحكم في كيفية تفاعل الحدث مع التفاعل (بالتسلسل).
عند استخدام addEventListener()
يحفظ التفريق بين JavaScript وHTML Markups، مما يحقق قراءة أفضل؛ حتى لو لم تكن تتحكم في HTML Markups يمكنك إضافة مستمع الحدث.
يمكنك استخدام removeEventListener()
يتم إزالة مستمع الحدث بسهولة.
النحو
element.addEventListener(event, function, useCapture);
الإعداد الأول هو نوع الحدث (مثل "click" أو "mousedown").
الإعداد الثاني هو الدالة التي نحتاج إلى تفعيلها عند حدوث الحدث.
الإعداد الثالث هو قيمة بولية، يحدد إذا كان يجب استخدام تفاعل الحدث (بالتسلسل) أو تفاعل الحدث (بالتسلسل). هذا الإعداد هو اختياري.
ملاحظة:لا تستخدم Präfix "on" مع الأحداث؛ استخدم "click" بدلاً من "onclick".
إضافة معالج الحدث إلى العنصر
مثال
يظهر رسالة "Hello World!" عند النقر على العنصر من قبل المستخدم:
element.addEventListener("click", function(){ alert("Hello World!"); });
يمكنك أيضًا مراجعة الدوال "المسمى" الخارجية:
مثال
يظهر رسالة "Hello World!" عند النقر على العنصر من قبل المستخدم:
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
addEventListener()
يسمح لك بإضافة مستمع الحدث إلى أي عنصر DOM HTML، مثل العناصر HTML أو العناصر HTML أو عنصر window أو أي عنصر يدعم الأحداث، مثل xmlHttpRequest.
مثال
إضافة مستمع الحدث عند تعديل حجم النافذة:
window.addEventListener("resize", function(){ document.getElementById("demo").innerHTML = sometext; });
إرسال المعامل
عند إرسال قيمة المعامل، استخدم معامل "anonymous function" لتسمية الدالة المحددة
مثال
element.addEventListener("click", function(){ myFunction(p1, p2); });
انتقال الحدث الفقاعي أم الاستقبالي؟
هناك طريقتين لانتقال الحدث في HTML DOM: الفقاعة والاستقبال.
انتقال الحدث هو طريقة لتحديد ترتيب العناصر عند حدوث الحدث. إذا كان لديك عنصر <div> يحتوي على عنصر <p>، ثم النقر على عنصر <p>، يجب معالجة حدث "click" لأي عنصر أولاً؟
في الفقاعة، يتم معالجة الحدث للعنصر الداخلي أولاً، ثم العناصر الخارجية: أولاً معالجة حدث النقر في العنصر <p>، ثم حدث النقر في العنصر <div>.
في الاستقبال، يتم معالجة الحدث للعنصر الخارجي أولاً، ثم العناصر الداخلية: أولاً معالجة حدث النقر في العنصر <div>، ثم حدث النقر في العنصر <p>.
في طريقة addEventListener()، يمكنك استخدام معامل "useCapture" لتحديد نوع الانتقال:
addEventListener(event, function, useCapture);
القيمة الافتراضية هي false
، سيتم استخدام انتقال الفقاعة، إذا تم تعيين هذه القيمة إلى true
، فإن الحدث يستخدم انتقال الاستقبال.
مثال
document.getElementById("myP").addEventListener("click", myFunction, true); document.getElementById("myDiv").addEventListener("click", myFunction, true);
طريقة removeEventListener()
removeEventListener()
سيتم حذف البرنامج المعالج للحادث من addEventListener()
برنامج معالجة الحدث المضاف للطريقة:
مثال
element.removeEventListener("mousemove", myFunction);
دعم المتصفحات
الرقم في الجدول يحدد إصدار المتصفح الأول الذي يدعم هذه الطرق بالكامل.
الطريقة | |||||
addEventListener() | 1.0 | 9.0 | 1.0 | 1.0 | 7.0 |
removeEventListener() | 1.0 | 9.0 | 1.0 | 1.0 | 7.0 |
ملاحظة:IE 8،Opera 6.0 وأول إصداراتها لا تدعم addEventListener()
و removeEventListener()
الطريقة. ولكن، بالنسبة لهذه إصدارات المتصفحات الخاصة، يمكنك استخدام attachEvent()}
الطريقة لإضافة معالج أحداث إلى العنصر، ويتم detachEvent()
إزالة الطريقة:
element.attachEvent(event, function); element.detachEvent(event, function);
مثال
حل متعدد المتصفحات:
var x = document.getElementById("myBtn"); if (x.addEventListener) { // لمواجهة المتصفحات الرئيسية، باستثناء إصدارات IE 8 وأقل x.addEventListener("click", myFunction); } else if (x.attachEvent) { // لمواجهة إصدارات IE 8 وأقل x.attachEvent("onclick", myFunction); }
دليل مرجعي لعنصر أحداث HTML DOM
للحصول على قائمة كاملة بأحداث HTML DOM، يرجى زيارة دليل مرجعي لعنصر أحداث HTML DOM.