Подтвердить что ты не робот

Как узнать, когда загрузка завершена?

Есть ли способ узнать, закончилась ли загрузка? То есть мы разрешаем пользователям загружать отчет в формате PDF. Для начала загрузки требуется около 3 - 5 секунд, и в это время от нажатия до конца загрузки отобразите значок состояния ожидания, чтобы пользователь не нажимал несколько раз.

Спасибо! Эрик

4b9b3361

Ответ 1

Хорошо, так это то, что мы сделали.

Когда пользователь нажимает на ссылку для загрузки PDF файла, мы показываем значок состояния ожидания и делаем асинхронный запрос на сервер приложений, чтобы начать сборку PDF. Когда процесс выполняется, он возвращает URL-адрес PDF файла. После этого мы удаляем изображение состояния ожидания и задаем location.href= url. Я думаю, что это лучшее решение.

Спасибо всем за идеи/предложения/код!

Ответ 2

Вы можете просто отключить ссылку в течение 5 секунд после ее нажатия и отобразить значок скрытого ожидания.

Ответ 3

Это нетривиально. Если вы используете script для отправки PDF файла, вы можете установить флаг где-нибудь, чтобы указать, что script завершил отправку данных. Но это просто означает, что выполняется script. Это не означает, что байты были отправлены в любом случае. Они могут застревать в исходящей очереди веб-сервера, ожидая, что бесплатный слот действительно будет отправлен на провод.

Лучшее решение, которое я видел для этого, - это открыть новое окно, чтобы начать загрузку, и поместить в него анимацию/текст в виде обычного "Подождите, я думаю...". Чтобы пользователь несколько раз щелкнул по исходной кнопке donwload (и появив несколько окон для загрузки), вы можете добавить немного javascript, чтобы отключить кнопку в течение короткого периода времени.