Разница между addEventListener и onreadystatechange

Читал https://developer.mozilla.org/ru/docs/Web/API/XMLHttpRequest/Using_XMLHttpRequest, раздел Отслеживание процесса загрузки. Там приведен код

oReq.addEventListener("progress", updateProgress, false);
oReq.addEventListener("load", transferComplete, false);
oReq.addEventListener("error", transferFailed, false);
oReq.addEventListener("abort", transferCanceled, false);

и https://developer.mozilla.org/ru/docs/Web/Guide/AJAX/%D0%A1_%D1%87%D0%B5%D0%B3%D0%BE_%D0%BD%D0%B0%D1%87%D0%B0%D1%82%D1%8C - Шаг 3 -простой пример

httpRequest.onreadystatechange = function() { alertContents(httpRequest); };
function alertContents(httpRequest) {

    if (httpRequest.readyState == 4) {
        if (httpRequest.status == 200) {
            alert(httpRequest.responseText);
        } else {
            alert('С запросом возникла проблема.');
        }
    }

}                

В чем разница по производимому действию между addEventListener и onreadystatechange в данном конкретном случае?


Ответы (2 шт):

Автор решения: DiD

Нет никакой разницы. addEventListener() позволяет повесить на событие слушателя не удаляя остальных слушателей. То есть можно повесить на одно событие два разных слушателя или два одинаковых.

Удалить слушателя можно методом removeEventListener().

Подробнее тут: https://www.w3schools.com/js/js_htmldom_eventlistener.asp

Можно остановить выполнение цепочки событий методом event.stopPropagation(): https://www.w3schools.com/jsref/event_stoppropagation.asp

Помимо этого можно отменять стандартные действия браузера по текущему событию методом event.preventDefault(): https://www.w3schools.com/jsref/event_preventdefault.asp

→ Ссылка
Автор решения: Grundy

readystatechange - точно такое же событие, как и load, progress и т.д.

Способов добавить обработчик событию - два

  1. задать соответствующее свойство, начинающееся с on
  2. воспользоваться функцией .addEventListener
→ Ссылка