Est-il possible de régler le curseur pour «attendre» sur toute la page html d'une manière simple? L'idée est de montrer à l'utilisateur que quelque chose se passe pendant qu'un appel ajax est terminé. Le code ci-dessous montre une version simplifiée de ce que j'ai essayé et démontre également les problèmes que je rencontre:
- si un élément (# id1) a un style de curseur défini, il ignorera celui défini sur le corps (évidemment)
- certains éléments ont un style de curseur par défaut (a) et n'afficheront pas le curseur d'attente au survol
- l'élément body a une certaine hauteur en fonction du contenu et si la page est courte, le curseur ne s'affichera pas sous le pied de page
Le test:
<html>
<head>
<style type="text/css">
#id1 {
background-color: #06f;
cursor: pointer;
}
#id2 {
background-color: #f60;
}
</style>
</head>
<body>
<div id="id1">cursor: pointer</div>
<div id="id2">no cursor</div>
<a href="#" onclick="document.body.style.cursor = 'wait'; return false">Do something</a>
</body>
</html>
Édition ultérieure ...
Cela a fonctionné dans Firefox et IE avec:
div#mask { display: none; cursor: wait; z-index: 9999;
position: absolute; top: 0; left: 0; height: 100%;
width: 100%; background-color: #fff; opacity: 0; filter: alpha(opacity = 0);}
<a href="#" onclick="document.getElementById('mask').style.display = 'block'; return false">
Do something</a>
Le problème avec (ou la caractéristique de) cette solution est qu'elle empêchera les clics en raison du chevauchement div (merci Kibbee)
Plus tard, modifier plus tard ...
Une solution plus simple de Dorward:
.wait, .wait * { cursor: wait !important; }
puis
<a href="#" onclick="document.body.className = 'wait'; return false">Do something</a>
Cette solution n'affiche que le curseur d'attente mais autorise les clics.