يستخدم الناس المزيد حول مراقبة الأحداث في JS ، لكن هذا ليس أكثر من الحكم على ما إذا كان المتصفح يدعم AddEventListener و Accuptionevent. هناك العديد من الطرق للبحث عن مراقبة الأحداث عبر الإنترنت ، لكن بعضها ليس مثاليًا للغاية. الطريقة التالية هي نفسها لإضافة الاستماع إلى الحدث ، باستثناء أن بعض الجراحة قد أجريت على إلغاء ربط الحدث ، ويمكن الآن دعم استخدام الوظائف المجهولة ، لذلك عند الأحداث الملزمة ، لم تعد بحاجة إلى تسمية الوظيفة بشكل منفصل.
الرمز الرئيسي:
نسخة الكود كما يلي:
/*أحداث ملزمة وإلغاء الترويج*/
var walledhash = {} ؛
var bind = (function () {
if (window.adDeventListener) {
وظيفة الإرجاع (EL ، type ، fn ، capture) {
el.addeventListener (type ، function () {
fn () ؛
WalledHash [type] = handlehash [type] || [] ؛
walledhash [type] .push (encuments.callee) ؛
}، يأسر)؛
} ؛
} آخر إذا (window.attachevent) {
وظيفة الإرجاع (EL ، type ، fn ، capture) {
el.attachevent ("on" + type ، function () {
fn () ؛
WalledHash [type] = handlehash [type] || [] ؛
walledhash [type] .push (encuments.callee) ؛
}) ؛
} ؛
}
}) () ؛
var unbind = (function () {
if (window.adDeventListener) {
وظيفة الإرجاع (EL ، type) {
if (handhash [type]) {
var i = 0 ، len = handlehash [type] .Length ؛
لـ (i ؛ i <len ؛ i += 1) {
el.RemoveEventListener (type ، walledhash [type] [i]) ؛
}
} ؛
} ؛
} آخر إذا (window.attachevent) {
وظيفة الإرجاع (EL ، type) {
if (handhash [type]) {
var i = 0 ، len = handlehash [type] .Length ؛
لـ (i ؛ i <len ؛ i += 1) {
el.detachevent ("on" + type ، walledhash [type] [i]) ؛
}
} ؛
} ؛
}
}) () ؛
تحليل المبدأ:
يقوم Handhash بجدول التجزئة لتخزين وظيفة الأحداث. HandleHash ['اسم الحدث'] عبارة عن مجموعة لإضافة طرق استماع متعددة الأحداث. عندما تخلص من الحدث الذي يتم إلحاقه ، قم بالتكرار من خلال مجموعة من walledhash ['اسم الحدث'] ثم قم بإزالته.
يستخدم:
نسخة الكود كما يلي:
bind (obj ، 'click' ، function () {
تنبيه ("انقر") ؛
}) ؛
unfind (obj ، 'click') ؛