Обработчик и слушатель - это одно и то же - только синонимы для функции, которая будет обрабатывать событие. «Обработчик», вероятно, является более приемлемым термином и, конечно, более семантически верен для меня. Термин «слушатель» происходит от кода, используемого для добавления события к элементу:
element.addEventListener('click', function() { /* do stuff here*/ }, false);
Вы могли бы, однако, стать действительно придирчивыми и разбить их на отдельные значения. Если вы так склонны, «обработчик» может быть термином для функции, которая будет обрабатывать событие, когда вы добавляете «слушатель», поэтому можно иметь несколько «слушателей», которые используют один «обработчик». Рассмотрим:
// handler is synonymous with function
function someFunction(e) {
if (typeof e == 'undefined')
alert('called as a function');
else
alert('called as a handler');
}
// use someFunction as a handler for a
// click event on element1 -- add a "listener"
element.addEventListener('click', someFunction, false);
// use an anonymous function as a handler for a
// click event on element1 -- add another "listener"
element.addEventListener('click', function () { alert('anonymoose'); }, false);
// use someFunction as a handler for a
// click event on element2 -- add a "listener"
element2.addEventListener('click', someFunction, false);
// call someFunction right now
someFunction();
Итак, в приведенном выше коде у меня есть 2 «обработчика» (someFunction и анонимная функция) и 3 «слушателя».
Опять же, это все семантика - для всех практических целей термины слушатель и обработчик используются взаимозаменяемо. Если необходимо провести различие, тогда слушатель является подпиской на событие, которое вызовет вызов обработчика (который является функцией ).
Ясно, как грязь?