Изменяя обработчик событий в вашем this.events
объекте, обработчики событий больше не совпадают.
http://jsfiddle.net/asXzA/1/
Я предлагаю вам создать реестр событий, добавленных через ваш* Система 1007 *, таким образом, вы можете легко вытаскивать вещи.
this.events = {
eventRegistry : {},
addEventListener : function(element, eventName, eventHandler, scope) {
var scopedEventHandler = scope ? function(e) { eventHandler.apply(scope, [e]); } : eventHandler;
// save the scoped event handler
if (typeof eventRegistry == "undefined")
eventRegistry = {};
if (typeof eventRegistry[eventName] == "undefined")
eventRegistry[eventName] = {};
eventRegistry[eventName][eventHandler] = scopedEventHandler;
if(document.addEventListener)
element.addEventListener(eventName, scopedEventHandler, false);
else if(document.attachEvent)
element.attachEvent("on"+eventName, scopedEventHandler);
},
removeEventListener : function(element, eventName, eventHandler, scope) {
// retrieve saved event handler
var scopedEventHandler = eventRegistry[eventName][eventHandler];
if(document.removeEventListener)
element.removeEventListener(eventName, scopedEventHandler, false);
else if(document.detachEvent)
element.detachEvent("on"+eventName, scopedEventHandler);
}
};
this.keyEvent = function () { alert("keypressed"); this.events.removeEventListener(document.body, "keydown", this.keyEvent, this); alert("removed"); };
this.events.addEventListener( document.body, "keydown", this.keyEvent, this);