Чтение онлайн

на главную - закладки

Жанры

JavaScript. Подробное руководство, 6-е издание
Шрифт:

var uploading = false;

console.log(target.url);

target.ondragenter = function(e) {

console. log("dragenter");

if (uploading) return; // Игнорировать попытку сброса, если

// элемент уже занят выгрузкой файла

var types = e.dataTransfer.types;

if (types &&

((types.contains && types.contains("Files")) ||

(types.indexOf && types.index0f("Files”) !== -1))) {

target.classList.add("wantdrop");

return false;

}

};

target.ondragover = function(e) {

if (!uploading) return false;

};

target.ondragleave = function(e) {

if (!uploading) target.classList.remove("wantdrop");

};

target.ondrop = function(e) {

if (uploading) return false;

var files = e.dataTransfer.files;

if (files && files.length) {

uploading = true;

var message = "Выгружаются файлы:<ul>";

for(var і = 0; і < files.length; i++)

message += "<li>" + files[i].name + "</li>";

message += "</ul>";

target.innerHTML = message;

target.classList.remove("wantdrop");

target.classList.add("uploading");

var xhr = new XMLHttpRequest;

xhr.open("POST", url);

var body = new FormData;

for(var i=0; і < files.length; i++)

body.append(i, files[і]);

xhr.upload.onprogress = function(e) {

if (e.lengthComputable) {

target.innerHTML = message +

Math.round(e.loaded/e.total*100) +

"% Завершено";

}

};

xhr.upload.onload = function(e) {

uploading = false;

target.classList.remove("uploading");

target.innerHTML = "Отбуксируйте сюда файл для выгрузки";

};

xhr.send(body);

return false;

}

target.classList. removefwantdrop");

}

}

});

18.1.5. Прерывание запросов и предельное время ожидания

Выполнение HTTP-запроса можно прерывать вызовом метода

abort
объекта
XMLHttpRequest
. Метод
abort
доступен во всех версиях объекта
XMLHttpRequest
, и согласно спецификации «XHR2» вызов метода
abort
генерирует событие «abort». (На момент написания этих строк некоторые броузеры уже поддерживали событие «abort». Наличие этой поддержки можно определить по присутствию свойства
onabort
в объекте
XMLHttpRequest
.)

Основная причина для вызова метода

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

Спецификация «XHR2» определяет свойство

timeout
, в котором указывается промежуток времени в миллисекундах, после которого запрос автоматически будет прерван, а также определяет событие «timeout», которое должно генерироваться (вместо события «abort») по истечении установленного промежутка времени. На момент написания этих строк броузеры еще не поддерживали автоматическое прерывание запроса по истечении предельного времени ожидания (и объекты
XMLHttpRequest
в них не имели свойств
timeout
и
ontimeout
). Однако имеется возможность реализовать собственную поддержку прерывания запросов по истечении заданного интервала времени с помощью функции
setTimeout
(раздел 14.1) и метода
abort.
Как это сделать, демонстрирует пример 18.12.

Поделиться:
Популярные книги

Катализ

Скаландис Ант
Фантастика:
научная фантастика
5.00
рейтинг книги
Катализ

Телохранитель Генсека. Том 2

Алмазный Петр
2. Медведев
Фантастика:
попаданцы
альтернативная история
6.25
рейтинг книги
Телохранитель Генсека. Том 2

Истребители. Трилогия

Поселягин Владимир Геннадьевич
Фантастика:
альтернативная история
7.30
рейтинг книги
Истребители. Трилогия

Газлайтер. Том 10

Володин Григорий
10. История Телепата
Фантастика:
боевая фантастика
5.00
рейтинг книги
Газлайтер. Том 10

На цепи

Уваров
1. На цепи
Старинная литература:
прочая старинная литература
5.00
рейтинг книги
На цепи

Старый, но крепкий 4

Крынов Макс
4. Культивация без насилия
Фантастика:
уся
фэнтези
5.00
рейтинг книги
Старый, но крепкий 4

Эволюционер из трущоб. Том 2

Панарин Антон
2. Эволюционер из трущоб
Фантастика:
космическая фантастика
попаданцы
5.00
рейтинг книги
Эволюционер из трущоб. Том 2

Геном хищника. Книга третья

Гарцевич Евгений Александрович
3. Я - Легенда!
Фантастика:
боевая фантастика
рпг
попаданцы
5.00
рейтинг книги
Геном хищника. Книга третья

Секретная история вампиров

Тертлдав Гарри Норман
Фантастика:
ужасы и мистика
альтернативная история
5.00
рейтинг книги
Секретная история вампиров

Последний Паладин. Том 4

Саваровский Роман
4. Путь Паладина
Фантастика:
фэнтези
попаданцы
аниме
5.00
рейтинг книги
Последний Паладин. Том 4

Наследие Маозари 2

Панежин Евгений
2. Наследие Маозари
Фантастика:
попаданцы
рпг
аниме
5.00
рейтинг книги
Наследие Маозари 2

Газлайтер. Том 29

Володин Григорий Григорьевич
29. История Телепата
Фантастика:
боевая фантастика
попаданцы
аниме
5.00
рейтинг книги
Газлайтер. Том 29

Первый среди равных

Бор Жорж
1. Первый среди Равных
Фантастика:
попаданцы
аниме
фэнтези
5.00
рейтинг книги
Первый среди равных

Я до сих пор царь. Книга XXXII

Дрейк Сириус
32. Дорогой барон!
Фантастика:
юмористическое фэнтези
аниме
попаданцы
5.00
рейтинг книги
Я до сих пор царь. Книга XXXII