TommyWork,
1. addEventListener не происходит и не порождает событие, он назначает обработчик события на элемент, дословно добавитьСобытияСлушатель, произойдет событие или нет от него не зависит.
2. removeEventListener требует те же аргументы что были указаны в addEventListener, и чтобы оба метода во втором аргументе ссылались на один и тот же объект (функцию), отсутствующий третий аргумент равняется false:
function handler(e){}
// или
var handler = function(e){};
// или
var handler = {
handleEvent: function(e){}
};
// ПРАВИЛЬНО
element.addEventListener('click', handler, false);
element.removeEventListener('click', handler, false);
// НЕПРАВИЛЬНО
element.addEventListener('click', handler, false);
element.removeEventListener('mousedown', handler, false);
// или
element.addEventListener('click', handler);
element.removeEventListener('click', handler, true);
// или
element.addEventListener('click', function(e){}, false);
element.removeEventListener('click', function(e){}, false);
// или
element.addEventListener('click', function handler(e){}, false);
element.removeEventListener('click', handler, false);
3. Первый параметр в обработчике независимо от имени всегда является объектом события, однако в атрибуте объект события передается словом event, а элемент события словом this, в произвольном порядке:
<input onclick="handler(this, event)">
<input onclick="handler(event, this)">
function handler(arg1, arg2){}