Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 21.09.2014, 17:28
Профессор
Отправить личное сообщение для Dimaz Посмотреть профиль Найти все сообщения от Dimaz
 
Регистрация: 25.12.2009
Сообщений: 222

Как узнать, что метод abort отработал?
После нажатия кнопки "Отменить загрузку" вызывается метод abort, который останавливает нужную загрузку. После этого в элемент, в который записывается статус загрузки, должен записаться текст "Загрузка отменена". Но он записывается туда лишь на долю секунды, а потом затирается статусом загрузки.
Судя по всему метод abort не успевает моментально прервать загрузку и остановить функцию обновления статуса(progress). Как исправить этот баг?
btn.addEventListener("click",function(){
xhr.abort();
this.previousElementSibling.innerHTML = "Загрузка отменена.";
},false);
Ответить с цитированием
  #2 (permalink)  
Старый 22.09.2014, 14:37
Профессор
Отправить личное сообщение для krasovsky Посмотреть профиль Найти все сообщения от krasovsky
 
Регистрация: 21.12.2012
Сообщений: 869

Приведи полный пример
Ответить с цитированием
  #3 (permalink)  
Старый 22.09.2014, 18:42
Профессор
Отправить личное сообщение для Dimaz Посмотреть профиль Найти все сообщения от Dimaz
 
Регистрация: 25.12.2009
Сообщений: 222

Сообщение от krasovsky Посмотреть сообщение
Приведи полный пример
Вот функция, которая обновляет статус загрузки. Метод abort, который я вызываю кнопкой, должен остановить загрузку и соответственно событие progress. Только текст "загрузка отменена" вставляется на несколько миллисекунд раньше, чем прекратит свою работу функция обновления статуса updateProgress.
function updateProgress (event) {
  if (event.lengthComputable) {
	var status = document.getElementById("b"+xhr.x);
	status.innerHTML = 'Загружено ' + event.loaded + ' байт из '+ event.total;
  } else {
    console.log("Unable to compute progress information since the total size is unknown.");
  }
//..
xhr.addEventListener("progress", updateProgress, false);
}
Ответить с цитированием
  #4 (permalink)  
Старый 25.09.2014, 17:45
Профессор
Отправить личное сообщение для Dimaz Посмотреть профиль Найти все сообщения от Dimaz
 
Регистрация: 25.12.2009
Сообщений: 222

Помогите кто-нибудь, пожалуйста. Это последний баг, который нужно исправить. Почему так происходит? Что можно сделать?
Ответить с цитированием
  #5 (permalink)  
Старый 26.09.2014, 05:15
Аватар для Aetae
Тлен
Отправить личное сообщение для Aetae Посмотреть профиль Найти все сообщения от Aetae
 
Регистрация: 02.01.2010
Сообщений: 6,597

Dimaz, кроме progress существуют и другие события:
oReq.addEventListener("progress", updateProgress, false);
oReq.addEventListener("load", transferComplete, false);
oReq.addEventListener("error", transferFailed, false);
oReq.addEventListener("abort", transferCanceled, false);
Поскольку отмена происходит не сразу, следует вывод фразы "загрузка отменена" повесить на событие abort.
__________________
29375, 35

Последний раз редактировалось Aetae, 26.09.2014 в 05:18.
Ответить с цитированием
  #6 (permalink)  
Старый 26.09.2014, 12:50
Профессор
Отправить личное сообщение для Dimaz Посмотреть профиль Найти все сообщения от Dimaz
 
Регистрация: 25.12.2009
Сообщений: 222

Aetae,
Добавил код вывода фразы "загрузка отменена" в функцию transferCanceled(). Не помогло. Всё также затирается статусом.
btn.addEventListener("click",function(){
xhr.abort();
},false);
//...
function transferCanceled(){
document.getElementById("b"+xhr.x).innerHTML = "Загрузка отменена.";
}
//...
xhr.addEventListener("abort", transferCanceled, false);
Ответить с цитированием
  #7 (permalink)  
Старый 26.09.2014, 22:32
Аватар для Aetae
Тлен
Отправить личное сообщение для Aetae Посмотреть профиль Найти все сообщения от Aetae
 
Регистрация: 02.01.2010
Сообщений: 6,597

Dimaz, железное решение в лоб: в updateProgress поставить проверку на флаг "загрузка отменена", и после xhr.abort(); ставить этот флаг в true.

Но вообще по идее так быть не должно.
__________________
29375, 35
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Как узнать, что содержит onClick? PHPNoob Events/DOM/Window 3 17.07.2015 12:20
Как можно узнать что value в INPUT изменилось? moskrc jQuery 2 22.10.2010 09:06
Как узнать о том, что флэш уже загрузился. Snipe Общие вопросы Javascript 4 29.01.2009 11:21
Как узнать, что IFRAME загрузился? DeUre Общие вопросы Javascript 4 01.08.2008 14:09
Как узнать что находится в <label></label> duke_nu Events/DOM/Window 4 22.04.2008 21:53