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

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

Жанры

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.

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

Кодекс Охотника. Книга XXXIV

Винокуров Юрий
34. Кодекс Охотника
Фантастика:
аниме
фэнтези
попаданцы
5.00
рейтинг книги
Кодекс Охотника. Книга XXXIV

Иной. Том 1. Школа на краю пустыни

Amazerak
1. Иной в голове
Фантастика:
боевая фантастика
рпг
аниме
5.75
рейтинг книги
Иной. Том 1. Школа на краю пустыни

Афганский рубеж 3

Дорин Михаил
3. Рубеж
Фантастика:
попаданцы
альтернативная история
6.00
рейтинг книги
Афганский рубеж 3

Вампилов

Румянцев Андрей Григорьевич
1546. Жизнь замечательных людей
Документальная литература:
биографии и мемуары
5.00
рейтинг книги
Вампилов

Демон-хранитель

TsissiBlack
Фантастика:
фэнтези
мистика
5.20
рейтинг книги
Демон-хранитель

На цепи

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

Мы друг друга не выбирали

Кистяева Марина
1. Мы выбираем...
Любовные романы:
остросюжетные любовные романы
прочие любовные романы
современные любовные романы
5.00
рейтинг книги
Мы друг друга не выбирали

Ботаник 2

Щепетнов Евгений Владимирович
2. Ботаник
Фантастика:
фэнтези
боевая фантастика
6.00
рейтинг книги
Ботаник 2

Искатель 2

Шиленко Сергей
2. Валинор
Фантастика:
фэнтези
попаданцы
рпг
5.00
рейтинг книги
Искатель 2

Тихие ночи

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

Я все еще барон

Дрейк Сириус
4. Дорогой барон!
Фантастика:
боевая фантастика
5.00
рейтинг книги
Я все еще барон

На границе империй. Том 10. Часть 9

INDIGO
Вселенная EVE Online
Фантастика:
боевая фантастика
космическая фантастика
попаданцы
5.00
рейтинг книги
На границе империй. Том 10. Часть 9

Здравствуй, 1985-й

Иванов Дмитрий
2. Девяностые
Фантастика:
альтернативная история
5.25
рейтинг книги
Здравствуй, 1985-й

Три `Д` для миллиардера. Свадебный салон

Тоцка Тала
Любовные романы:
современные любовные романы
короткие любовные романы
7.14
рейтинг книги
Три `Д` для миллиардера. Свадебный салон