Что не так с отменой загрузки кендо?
Я вижу очень странную вещь с пользовательским интерфейсом кендо kendoUpload
, Я реализовал пользовательский интерфейс для отображения загружаемых файлов, а также индикатор выполнения и кнопку отмены. Kendo не предлагает API для отмены загрузки, но я прочитал здесь, что вы можете нажать на отображение прогресса загрузки по умолчанию, чтобы отменить загрузку. Это именно то, что я сделал, со следующей функцией JavaScript, прикрепленной к моей пользовательской кнопке отмены:
var fileName = _getFileNameForThisCancelButton();
var kendoUpload = $('#file_upload').data('kendoUpload');
if (kendoUpload) {
var cancelButton = kendoUpload.wrapper.find('ul.k-upload-files')
.find('.k-file:has([title="' + fileName + '"]) .k-cancel');
cancelButton.click();
}
Эта маленькая функция работает настолько, насколько kendoUpload
Это событие отмены, и сетевой трафик останавливается, поэтому данные, по-видимому, больше не отправляются из браузера на сервер.
Однако после нажатия одной кнопки отмены все последующие запросы к сайту из браузера, в котором была нажата кнопка отмены, навсегда останавливаются. Обратите внимание, что это относится ко всему сайту, а не только к странице загрузки файла, и только к соответствующему браузеру - сайт по-прежнему загружается в других браузерах, где кнопки отмены загрузки не были нажаты. Это касается Chrome 30.0.1599.69 m, Firefox 20.0 и IE8.
В Firefox и IE простое закрытие и перезапуск браузера приводит к остановке зависания, и сайт снова загружается. С помощью Chrome я обнаружил, что это не работает, а также не выходит из системы с моей локальной машины - мне нужно сделать полную перезагрузку, чтобы сайт снова загрузился в Chrome. Я думаю, что это может иметь какое-то отношение к моим настройкам Chrome, хотя. У меня настроена загрузка всех моих последних вкладок при повторном открытии, и я заметил, что закрытие и повторное открытие Chrome также не удаляет мой файл cookie для входа на сайт. В любом случае, это та же проблема, даже если ее сложнее сбросить в Chrome.
Итак... есть идеи, что здесь происходит? Похоже, что браузеры все еще ждут ответа от сервера об отмененной загрузке и блокируют весь сайт, ожидая ответа, который никогда не будет доставлен.
Обновления
Оказывается, я был прав насчет Chrome. После отключения опции запуска "Продолжить с того места, где я остановился", Chrome теперь работает так же, как FF и IE - необходимо закрыть и снова открыть браузер, чтобы сайт снова загрузился.
Я также пробовал это без пользовательского интерфейса, то есть я выключил showFileList: false
при создании виджета и нажал фактическую кнопку отмены. Начинаешь задумываться, имеет ли это какое-либо отношение к методу POST на сервере...?