Bonjour à tous!

Le titre de ce thread est, me semble-t-il, plutôt parlant, mais je vais tout de même vous exposer en détails mon (petit) problème.

Je bosse actuellement sur un système de reporting, où des formateurs pourront venir consulter les statistiques d'apprentissage de leurs élèves. Une fonctionnalité "bonus" que nous venons d'implémenter est la génération d'un fichier XLS que lesdits formateurs pourront télécharger.

Actuellement, cela se passe comme suit:
  • Sur la page globale, le formateur clique sur un bouton "Télécharger le rapport au format Excel".
  • Il arrive alors sur une autre page, où il doit renseigner le groupe d'étudiants dont il aimerait télécharger les statistiques.
  • Une fois le groupe renseigné (liste déroulante), il clique sur un bouton. Ce bouton va en fait "générer" le XLS, et le proposer au téléchargement via une boîte de dialogue (celle du titre).


Bon, voilà pour la manière de procédé.

Alors mon soucis, c'est qu'entre le moment où l'apprenant clique sur le bouton et l'apparition de la boîte de dialogue pour le téléchargement, il s'écoule environ 10 secondes. Note: le temps de génération (de 10 secondes ici) varie selon le nombre d'étudiants dans un groupe. Pour éviter que les formateurs (qui sont linguistes, pas informaticiens) ne cliquent comme des possédés sur le bouton, j'ai écrit ce petit script:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
 
<script type="text/javascript">
function hideButton(){
	document.getElementById("loader").style.display="inline";
	document.getElementById("btn").style.display="none";
	setTimeout(function(){showButton()},10000);
	}
 
function showButton(){
	document.getElementById("loader").style.display="none";
	document.getElementById("btn").style.display="inline";
}
 
</script>
Où bien entendu, "loader" est une div contenant un message (Please wait while loading) et un gif animé de loading, "btn" étant l'input de type "submit" (mon bouton).

En gros, pour éviter le clic multiple sur mon bouton, je le "cache" après le premier clique, j'affiche le message de chargement et le gif, puis après 10 secondes, j'efface ceux-ci pour refaire la place au bouton.

Globalement, c'est franchement pas compliqué, mais bon, ça fait un peu "bonne franquette".

Ma question donc, j'y arrive, c'est: est-il possible de détecter un event souris (onclick,...) sur la boîte de dialogue (qui propose le fichier à télécharger), ou encore un event genre close... afin de lancer une fonction javascript au moment où l'utilisateur clique sur "OK" par exemple (au lieu d'attendre 10 bêtes secondes parce bon, c'est quand même au petit bonheur la chance quoi...)??

Voilà, j'espère m'être exprimer plus ou moins correctement, j'espère en tous cas que vous aurez compris mon problème.

Si vous avez besoin de plus de renseignements, n'hésitez évidemment pas à les demander!

Merci d'avance!

(PS: je suis une vraie quiche en Javascript)