È possibile impostare il cursore per "attendere" sull'intera pagina html in modo semplice? L'idea è mostrare all'utente che sta succedendo qualcosa mentre una chiamata ajax viene completata. Il codice seguente mostra una versione semplificata di ciò che ho provato e mostra anche i problemi che incontro:
- se un elemento (# id1) ha uno stile del cursore impostato ignorerà quello impostato sul corpo (ovviamente)
- alcuni elementi hanno uno stile di cursore predefinito (a) e non mostreranno il cursore di attesa al passaggio del mouse
- l'elemento body ha una certa altezza a seconda del contenuto e se la pagina è corta, il cursore non verrà mostrato sotto il piè di pagina
Il 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>
Modifica successiva ...
Ha funzionato in Firefox e IE con:
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>
Il problema con (o caratteristica di) questa soluzione è che impedirà i clic a causa del div sovrapposto (grazie Kibbee)
Più tardi in seguito modifica ...
Una soluzione più semplice di Dorward:
.wait, .wait * { cursor: wait !important; }
e poi
<a href="#" onclick="document.body.className = 'wait'; return false">Do something</a>
Questa soluzione mostra solo il cursore di attesa ma consente i clic.