Dans notre projet actuel, nous fournissons un téléchargement PDF qui peut être personnalisé par l'utilisateur via un formulaire HTML qu'il soumet. Il faut plusieurs secondes pour générer dynamiquement le PDF et je voudrais visualiser cela, par exemple. en désactivant le bouton d'envoi jusqu'à ce que le téléchargement commence. Malheureusement, je n'ai pas trouvé de moyen de détecter quand le téléchargement commence *. Donc, je ne sais pas quand réactiver le bouton de soumission.Existe-t-il un moyen de détecter le début d'un téléchargement en JavaScript?
J'ai déjà essayé de spécifier un IFrame comme cible de mon formulaire HTML, en espérant que l'événement onload
serait déclenché. Ce n'est pas le cas, probablement parce que le PDF est envoyé avec un en-tête "Content-disposition: attachment
" et qu'il n'est pas réellement chargé dans le IFrame. La seule solution que je puisse penser maintenant consiste à générer le fichier PDF sur un fichier temporaire sur le serveur, que je voudrais éviter. *) Permettez-moi de clarifier ceci: je n'aurais pas besoin de savoir si le téléchargement était terminé ou même si c'était vraiment commencé. Je voudrais détecter le point auquel le navigateur demandera à l'utilisateur d'ouvrir ou de sauvegarder le fichier. Je suppose que cela se produit lorsque le navigateur reçoit l'en-tête HTTP.
Voulez-vous savoir quand le téléchargement commence ou quand il se termine? De toute façon, je ne pense pas qu'un fichier temporaire fera la différence. Du côté client, vous ne pouvez pas savoir si le fichier était installé sur le serveur ou généré à la volée. – Prestaul
Donc, vous soumettez le formulaire, et la réponse à cette demande est un fichier PDF? Pendant la pause, le navigateur est dans le mode où il attend une réponse du serveur? est-ce correct? – Breton
@Breton: correct! @Pretaul: Je voudrais savoir quand le téléchargement commence. Ainsi, je pourrais créer un fichier temporaire, fournir une réponse HTML à l'IFrame caché, puis récupérer le fichier temporaire par JavaScript dans le gestionnaire onload. –