HTML / Javascript: как отслеживать, если загрузка была прервана? - PullRequest
0 голосов
/ 18 ноября 2011

Так, например, у нас есть файл HTML с содержанием, похожим на это:

<body>
    <form action="/upload" type="post" id="upload-form" enctype="multipart/form-data">
        <input type="file" name="file-input" />
    </form>
</body>

Что я хочу в javascript

  • Чтобы получать уведомления, когда сервер обнаруживает ошибку и прерывает запрос на загрузку
  • Чтобы получать уведомления, когда пользователь прерывает загрузку вручную
  • Или любые виды прерывания, которые могут произойти

Что-то вроде:

var form = document.getElementById('upload-form');
form.onabort = function(error){ 
     alert(error); 
}

Существуют ли какие-либо нативные API или специальные методы для этого в javascript ?

1 Ответ

0 голосов
/ 28 ноября 2011

Вы можете уведомить AJAX до начала загрузки файла, а затем сохранить номер либо в сеансе на сервере, либо, если вы действительно хотите добавить столбец в базу данных.

Однако есть обработчик события onabortпонимание в том, что это только для элементов img.Вы можете попробовать и посмотреть, будет ли это работать для различных движков рендеринга (Gecko: Firefox, Presto: Opera, Trident: MSIE, WebKit (forks): Chrome / Safari.

<form onabort="alert('the onabort event worked on this form?');">

Есть отправкахотя это событие, так что вы можете попытаться объединить его в качестве точки START, а затем записать, если пользователь нажмет управляющую клавишу ...

if (window.addEventListener) {document.addEventListener('keydown',keyPressed,false);}
else {document.attachEvent('onkeydown',keyPressed);}

function keyPressed(evt)
{
 var e = evt || event;
 var key = e.which || e.keyCode;

 switch (key)
 {
  // Esc
  case 27:
  alert('escape key pressed');
  break;

  case 76://L
  alert('L key pressed');
  break;
 }
}
...