Из того, что я вижу, это может быть невозможно, вот цитата с сайта Mozilla:
https://developer.mozilla.org/en/DOM/element.addEventListener#Memory_issues
Проблемы с памятью
document.addEventListener ( "нагрузка",
функция (событие) {obj.func (событие); },
ложь);
Вызов addEventListener для
анонимная функция создает новый
слушатель каждый раз. призвание
удалитьEventListener для анонимного
функция не имеет никакого эффекта. Аноним
Функция создает уникальный объект каждый
время называется, это не
хотя ссылка на существующий объект
это может назвать один. При добавлении события
слушатель таким образом, убедитесь, что это
добавляется только один раз, он является постоянным (может
не удаляться) пока объект
был добавлен в уничтожен.
если слушатель не является анонимным, вы можете сделать это. Вот фрагмент кода из библиотеки YUI Event:
/**
* Returns all listeners attached to the given element via addListener.
* Optionally, you can specify a specific type of event to return.
* @method getListeners
* @param el {HTMLElement|string} the element or element id to inspect
* @param sType {string} optional type of listener to return. If
* left out, all listeners will be returned
* @return {Object} the listener. Contains the following fields:
* type: (string) the type of event
* fn: (function) the callback supplied to addListener
* obj: (object) the custom object supplied to addListener
* adjust: (boolean|object) whether or not to adjust the default context
* scope: (boolean) the derived context based on the adjust parameter
* index: (int) its position in the Event util listener cache
* @static
*/
getListeners: function(el, sType) {
var results=[], searchLists;
if (!sType) {
searchLists = [listeners, unloadListeners];
} else if (sType === "unload") {
searchLists = [unloadListeners];
} else {
sType = this._getType(sType);
searchLists = [listeners];
}
var oEl = (YAHOO.lang.isString(el)) ? this.getEl(el) : el;
for (var j=0;j<searchLists.length; j=j+1) {
var searchList = searchLists[j];
if (searchList) {
for (var i=0,len=searchList.length; i<len ; ++i) {
var l = searchList[i];
if ( l && l[this.EL] === oEl &&
(!sType || sType === l[this.TYPE]) ) {
results.push({
type: l[this.TYPE],
fn: l[this.FN],
obj: l[this.OBJ],
adjust: l[this.OVERRIDE],
scope: l[this.ADJ_SCOPE],
index: i
});
}
}
}
}
return (results.length) ? results : null;
},
вы можете прочитать больше здесь:
http://developer.yahoo.com/yui/event/