Показать сообщение отдельно
  #2 (permalink)  
Старый 02.05.2017, 09:56
Профессор
Отправить личное сообщение для Rise Посмотреть профиль Найти все сообщения от Rise
 
Регистрация: 07.11.2013
Сообщений: 4,672

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){}

Последний раз редактировалось Rise, 02.05.2017 в 11:03.
Ответить с цитированием