Orang -orang menggunakan lebih banyak tentang pemantauan acara di JS, tetapi tidak lebih dari menilai apakah browser mendukung AddEventListener dan AttachEvent. Ada banyak cara untuk mencari pemantauan acara online, tetapi beberapa tidak terlalu sempurna. Metode berikut adalah sama untuk menambahkan acara mendengarkan, kecuali bahwa beberapa operasi dilakukan pada pembatalan ikatan acara, dan penggunaan fungsi anonim sekarang dapat didukung, jadi ketika mengikat acara, tidak perlu lagi memberi nama fungsi secara terpisah.
Kode utama:
Salinan kode adalah sebagai berikut:
/*Acara yang mengikat dan tidak mengikat*/
var handehash = {};
var bind = (function () {
if (window.addeventListener) {
fungsi pengembalian (el, type, fn, capture) {
el.addeventListener (type, function () {
fn ();
Telangan [type] = Telangan [type] || [];
Telangan [type] .push (argumen.callee);
}, menangkap);
};
} lain jika (window.attachevent) {
fungsi pengembalian (el, type, fn, capture) {
el.attachevent ("on" + type, function () {
fn ();
Telangan [type] = Telangan [type] || [];
Telangan [type] .push (argumen.callee);
});
};
}
}) ();
var unbind = (function () {
if (window.addeventListener) {
fungsi pengembalian (EL, type) {
if (wellehash [type]) {
var i = 0, len = Telangan [type] .length;
untuk (i; i <len; i += 1) {
el.removeeventlistener (tipe, handehash [type] [i]);
}
};
};
} lain jika (window.attachevent) {
fungsi pengembalian (EL, type) {
if (wellehash [type]) {
var i = 0, len = Telangan [type] .length;
untuk (i; i <len; i += 1) {
el.detachevent ("on" + type, handehash [type] [i]);
}
};
};
}
}) ();
Analisis Prinsip:
Treehash melakukan tabel hash untuk menyimpan fungsi peristiwa. TRAWEHASH ['NAME EVENT'] adalah array untuk menambahkan beberapa metode mendengarkan acara. Ketika tidak membungkuk acara mana yang tidak terikat, beralih melalui array Teluare ['nama acara'] dan kemudian menghapusnya.
menggunakan:
Salinan kode adalah sebagai berikut:
bind (obj, 'klik', function () {
peringatan ('klik');
});
unbind (obj, 'klik');