У меня есть ссылка, которая при нажатии перенаправляет пользователя на ту же страницу, кроме дополнительных параметров:
<a id="lnkExportToPDF" href="javascript:void(0)">Export</a>
$('#lnkExportToPDF').click(function (e) {
e.preventDefault();
window.location.href = path + 'users/export/' + parm1 + '/' + parm2;
});
На стороне сервера я обрабатываю его, проверяя "экспорт" в пути запроса, и если он нашел, я пишу PDF файл в ответ:
System.Web.HttpResponse response = System.Web.HttpContext.Current.Response;
response.Clear();
response.AddHeader("Content-Type", "application/pdf");
response.AddHeader("Content-Disposition", String.Format("attachment; filename=" + filename + ".pdf; size={0}", buffer.Length.ToString()));
response.BinaryWrite(buffer);
response.End();
Все работает, и пользователь может загрузить файл, но любые дополнительные действия пользователя, который использует loader.gif
, который находится на странице, показывает невозможенный загрузчик.
Что может быть причиной этого? Есть ли способ обновить/перезагрузить страницу /javascript после завершения ответа?
edit: Я нашел полезный JS-инструмент здесь: http://fgnass.github.io/spin.js/, но я бы предпочел не использовать его, если абсолютно необходимо
edit2: Я также попытался использовать общий обработчик (.ashx) для обработки запроса (т.е. изменения href, чтобы указать на обработчик), но как только перенаправление страницы и файл написано, то же самое происходит
edit3: Проблема только в Firefox. Я пробовал Chrome и IE, а gif остается анимированным в этих браузерах. (последние версии каждого)
edit4: Если я использую iframe с src в качестве изображения, он решает проблему, но он очень взломан, и стиль его выглядит по-разному во всех браузерах по отношению к центрированию/заполнению/полям.
edit5: Да. Если я осмотрю замороженный gif с помощью firebug, он волшебным образом разморозит себя.