объект XMLHttpRequest.addEventListener против XMLHttpRequest.загружать.метод addEventListener

в чем разница между этим блоком кода:

var xhr = new XMLHttpRequest();
xhr.upload.addEventListener("progress", uploadProgress, false);
xhr.addEventListener("load", uploadComplete, false);
xhr.addEventListener("error", uploadFailed, false);
xhr.addEventListener("abort", uploadCanceled, false);

xhr.open("POST", "upload_url");
xhr.send(some_form_data);

и так:

var xhr = new XMLHttpRequest();
xhr.upload.addEventListener("progress", uploadProgress, false);
xhr.upload.addEventListener("load", uploadComplete, false);
xhr.upload.addEventListener("error", uploadFailed, false);
xhr.upload.addEventListener("abort", uploadCanceled, false);

xhr.open("POST", "upload_url");
xhr.send(some_form_data);

Я видел обе реализации в блогах и других сообщениях SO, но никто не объясняет, почему они используют один над другим. Единственное отличие, которое я могу найти на данный момент, заключается в том, что последний не работает в браузере Android по умолчанию, в то время как первый, похоже, работает практически на всем.

1 ответов


согласно спецификации w3c о XMLHttpRequest. http://www.w3.org/TR/XMLHttpRequest/#the-upload-attribute

Как указывалось ранее, каждый объект XMLHttpRequest имеет связанный объект XMLHttpRequestUpload.

события прогресса существуют как для загрузки, так и для передачи загрузки. События загрузки запускаются на самом объекте XMLHttpRequest, как показано в приведенном выше примере. Загрузка событий на объект XMLHttpRequest.загрузить объект