تصف هذه المقالة استخدام نموذج حدث JavaScript. شاركه للرجوع إليه. التحليل المحدد هو كما يلي:
1. نموذج الحدث
الفقاعات: يتم تمرير الأحداث من العقد الورقية على طول عقدة الأجداد إلى عقدة الجذر لأعلى.
التقاط: من العنصر العلوي من شجرة دوم إلى العنصر الأكثر دقة ، مقابل حدث الفقاعة
نموذج الحدث القياسي DOM: يدعم معيار DOM كلاً من أحداث الفقاعة والأحداث من نوع التقاط. يمكن قول أنه مزيج من الاثنين ، أولاً وقبل كل شيء ، من نوع التقاط ، ثم انتقال من نوع الفقاعات.
2. كائن الحدث
في متصفح IE ، كائن الحدث هو خاصية للنافذة. في معيار DOM ، يجب تمرير الحدث إلى وظيفة معالجة الأحداث كمعلمة فريدة.
الحصول على كائن حدث متوافق:
الدالة (الحدث) {// الحدث هو وظيفة معالجة تم تمريرها كمعلمة من الحدث القياسي DOM = الحدث؟ الحدث: window.event ؛ }في IE ، يوجد كائن الحدث في srcelement للحدث ، بينما في معيار DOM ، يوجد الكائن في الخاصية الهدف
الحصول على العنصر المشار إليه بواسطة كائن حدث متوافق:
var target = event.srcelement؟ event.srcelement: event.target ؛
الفرضية هي التأكد من الحصول على كائن الحدث بشكل صحيح
3. مستمع الحدث
بموجب IE ، يتم تنفيذ المستمع المسجل بترتيب عكسي ، أي أن المستمع المسجل يتم تنفيذه أولاً.
element.attachevent ('onClick' ، Observer) ؛ // سجل مستمع element.detachevent ('OnClick' ، Observer) // إزالة المستمعالمعلمة الأولى هي اسم الحدث ، والثاني هو وظيفة معالجة رد الاتصال
تحت DOM Standard:
element.addeventListener ('Click' ، Observer ، Usecapture) element.removeeventListener ('click' ، observer ، usecapture)المعلمة الأولى هي اسم الحدث ، دون بادئة "ON" ، والمعلمة الثانية هي وظيفة معالجة رد الاتصال ، وتشير المعلمة الثالثة إلى ما إذا كانت وظيفة رد الاتصال استدعاء في مرحلة الالتقاط أو في مرحلة الفقاعة. The Default True هو مرحلة الالتقاط
4. تسليم الحدث
إلغاء تسليم الحدث في المتصفح متوافق
وظيفة somethandler (الحدث) {event = event || window.event ؛ if (event.stopPropagation) // DOM event.stoppropagation () ؛ Else event.cancelBubble = true ؛ // أي قياسي}إلغاء المعالجة الافتراضية بعد تسليم الحدث
وظيفة somethandler (الحدث) {event = event || window.event ؛ if (event.preventDefault) // DOM Standard Event. PreveFault () ؛ Else Event.ReturnValue = true ؛ // أي قياسي}آمل أن تكون هذه المقالة مفيدة لبرمجة JavaScript للجميع.