1. تدفق الحدث
تصف تدفقات الأحداث الترتيب الذي يتم استلام الأحداث من الصفحة. لكن IE تقترح تيارات الفقاعات ، بينما يقترح Netscape Communicator تدفقات التقاط.
دفق حدث JavaScript
2. فقاعة الحدث
يبدأ الحدث في استلام العنصر الأكثر تحديداً (العقدة ذات التسلسل الهرمي أعمق) ، ثم ينتشر خطوة بخطوة إلى العقد الأقل تحديدًا (وثيقة). على النحو التالي:
نسخة الكود كما يلي:
<html>
<head>
<title> الحدث الفقاعات </title>
</head>
<body>
<div id = "mydiv"> انقر لي </div>
</body>
</html>
window.onload = function () {
var obj = document.getElementById ("test") ؛
obj.onclick = function () {
تنبيه (this.tagname) ؛
} ؛
document.body.onclick = function () {
تنبيه (this.tagname) ؛
} ؛
document.documentElement.onclick = function () {
تنبيه (this.tagname) ؛
} ؛
document.onclick = function () {
تنبيه ("وثيقة") ؛
} ؛
window.onclick = function () {
تنبيه ("نافذة") ؛
}
} ؛
أمر انتشار الحدث: div-> body-> html-> وثيقة
يلاحظ:
تدعم جميع المتصفحات الحديثة أحداث الفقاعات ، ولكن هناك بعض الاختلافات في التنفيذ. ستقفز فقاعات الأحداث في IE5.5 والإصدارات السابقة مباشرة من الجسم إلى المستند (لا يتم تنفيذ HTML). أحداث Firefox و Chrome و Safari Bubble على طول الطريق إلى كائن النافذة.
3. توقف عن فقاعات الأحداث وإلغاء الأحداث الافتراضية
أ. احصل على كائن الحدث
نسخة الكود كما يلي:
وظيفة getEvent (الحدث) {
// window.event ie
// الحدث غير
عودة الحدث || window.event ؛
}
ب الوظيفة: توقف عن فقاعات الأحداث
نسخة الكود كما يلي:
وظيفة stopbubble (e) {
// إذا تم توفير كائن حدث ، فهذا متصفح غير LI
if (e && e.StopPropagation) {
// لذلك فهو يدعم طريقة التوقف () من W3C
E.StopPropagation () ؛
} آخر {
// وإلا ، نحتاج إلى استخدام IE لإلغاء فقاعة الحدث
window.event.cancelbubble = true ؛
}
}
ج. منع السلوك الافتراضي للمتصفح
نسخة الكود كما يلي:
وظيفة stopDefault (e) {
// كتلة المتصفح الافتراضي (W3C)
if (e && e.preventDefault) {
E.PreventDefault () ؛
} آخر {
// كيفية منع الإجراء الافتراضي للوظيفة في IE
window.event.ReturnValue = false ؛
}
العودة كاذبة
}