Я предполагаю, что вы публикуете некоторые данные, генерируете CSV на сервере, устанавливаете тип контента и ждете появления диалогового окна сохранения браузера. Правильно?
В таком случае, я думаю, вы будете разочарованы. Я потратил довольно много времени, пытаясь найти события, которые сработали бы для этого точного сценария, и я не мог понять это. В конце концов мне пришлось сделать что-то замысловатое, например, использовать XHR для опроса статуса создания файла. Получив ответ, который я хотел, я спрятал пульсатор и запросил CSV.
Для ясности:
- Показать пульсировщик
- Используйте XHR, чтобы сообщить серверу о начале генерации CSV
- Использование XHR для опроса статуса создания CSV
- После завершения создания файла:
- добавить невидимый iframe в документ, который указывает на вновь созданный CSV, и заставить сервер добавить к нему заголовок размещения содержимого.
- Спрятать пульсатор после небольшой задержки (вы можете попытаться рассчитать его так, чтобы пульсатор был скрыт после отображения окна сохранения файла, но пока пользователь взаимодействует с окном). Вы также можете обнаружить событие размытия окна, чтобы скрыть пульсатор, но я уверен, что это не очень надежно.