У меня есть этот код как функция-обертка для слушателей, и когда я удаляю слушателя, я хочу выполнить обратный вызов - я должен использовать этот "обратный вызов ()" вместо простого обратного вызова внутри параметра обратного вызова removeEventListener. Может кто-то посмотреть и посмотреть, что я делаю не так
когда я думаю, что это должно быть просто
el.removeEventlistener (событие, обратный вызов, захват)
но это работает вместо этого, я думаю, что это неправильно
el.removeEventlistener (событие, обратный вызов (), захват)
ОБНОВЛЕНИЕ:
var evts = (function () {
'use strict';
var listeners = [],
add,
remove;
add = function (evt, elem, fn, capture) {
var callback = function (evt) {
fn.call(elem, evt, evt && evt.target ? evt.target : window.event.srcElement);
};
listeners.push({
evt: evt,
elem: elem,
fn: fn,
callback: callback,
capture, capture,
removed: false
});
if (elem.addEventListener) {
elem.addEventListener(evt, callback, capture);
} else if (elem.attachEvent) {
elem.attachEvent('on' + evt, callback, capture);
} else {
elem['on' + evt] = callback;
}
};
remove = function (evt, elem, fn, capture) {
var callback = function (evt) {
fn.call(elem, evt, evt && evt.target ? evt.target : window.event.srcElement);
};
callback();
listeners.forEach(function (obj, i) {
if (obj.evt === evt && obj.elem === elem &&
!obj.removed) {
obj.removed = true;
callback = obj.callback;
listeners.splice(i, 1);
}
});
if (elem.removeEventListener) {
elem.removeEventListener(evt, callback, capture);
} else if (elem.detachEvent) {
elem.detachEvent('on' + evt, callback, capture);
} else {
elem['on' + evt] = null;
}
};
return {
add: add,
remove: remove
};
}());