En nuestro proyecto actual, ofrecemos una descarga de PDF que el usuario puede personalizar a través de un formulario HTML que envía. Lleva varios segundos generar el PDF dinámicamente y me gustaría visualizar esto, p. Ej. desactivando el botón de enviar hasta que comience la descarga. Desafortunadamente, no pude encontrar una manera de detectar cuándo comienza la descarga *. Entonces no sabría cuándo reactivar el botón de enviar.¿Hay alguna forma de detectar el inicio de una descarga en JavaScript?
Ya he intentado especificar un IFrame como destino de mi formulario HTML, con la esperanza de que se active el evento onload
. No lo es, sin embargo, probablemente porque el PDF se envía con un encabezado "Content-disposition: attachment
" y no se carga realmente en el IFrame.
La única solución en la que puedo pensar ahora implica generar el PDF en un archivo temporal en el servidor, lo que me gustaría evitar.
*) Permítanme aclarar esto: no necesitaría saber si la descarga se completó o si realmente se inició. Me gustaría detectar el punto en el que el navegador le preguntará al usuario si abrir o guardar el archivo. Supongo que esto sucede cuando el navegador recibe el encabezado HTTP.
¿Desea saber cuándo comienza la descarga o cuándo se completa? De cualquier manera, no creo que un archivo temporal haga la diferencia. En el lado del cliente, no se puede decir si el archivo estaba en el servidor o se generó sobre la marcha. – Prestaul
¿Entonces envía el formulario y la respuesta a este envío es un archivo PDF? Durante la pausa, ¿el navegador está en el modo en el que está esperando una respuesta del servidor? ¿es esto correcto? – Breton
@Breton: ¡correcto! @Pretaul: me gustaría saber cuándo comienza la descarga. Entonces, podría crear un archivo temporal, entregar alguna respuesta HTML al IFrame oculto y luego buscar el archivo temporal por JavaScript en el controlador de carga. –