Bloquer les postback pendant le chargement d'une page
Bonjour tout le monde,
Je me heurte à un problème de viewstates lorsque je clique sur plusieurs autres actions pendant le chargement d'une page (exemple, j'ouvre un dossier, puis je clique sur d'autres dossiers ensuite, ou tout simplement je spam clique le même). L'appli web sur laquelle je bosse a des onglets qui sont gérés dans un viewState, et en cas de multiples clics lors du chargement, chaque postback génère un nouvel historique de viewStates, et lorsque celui-ci dépasse la limite de l'historique (géré par le code, pas par celui déterminé dans le webconfig), le viewstate du tout premier chargement déclenché n'existe plus et cela entraine des erreurs (la navigation d'onglets ne fonctionne plus)
Je ne peux pas augmenter l'historique car l'appli est trop gourmande pour en stocker trop, ni refaire les fonctionnalités de l'appli, donc je me demande si je pourrai pas rejeter toute demande de postback si un chargement est déjà entrain d'être effectué, et si oui, comment.
Merci d'avance pour votre aide
Syntaxe du jQuery corrigee
Dans ton cas, je pense que la solution la plus simple est la suivante :
Tu ajoutes un overlay directement visible sur la page :
Code:
1 2 3 4
| <div id="overlay">
<img src="spinner.gif" /><br/>
Chargement en cours...
</div> |
Ensuite en jQuery tu vas t'abonner a l'evenement "load" qui va se declencher une fois que la page est charge (contenu, frames, images, objets, etc.), et tu vas masquer l'overlay :
Code:
1 2 3
| $(window).on('load', function () {
$('#overlay').fadeOut();
}); |
Cherche sur ton moteur de recherche prefere "jquery add overlay while page is loading" et tu trouveras des exemples de CSS pour un overlay.
Tu peux aussi faire des overlays plus "specifiques" a certaines actions en ajoutant l'overlay lors du click sur un bouton/lien, puis par exemple tu envoies une requete AJAX et lorsque celle-ci est terminee tu masques l'overlay.