Czy można w prosty sposób ustawić kursor na „czekaj” na całej stronie html? Chodzi o to, aby pokazać użytkownikowi, że coś się dzieje podczas kończenia połączenia AJAX. Poniższy kod pokazuje uproszczoną wersję tego, co wypróbowałem, a także pokazuje problemy, na które napotykam:
- jeśli element (# id1) ma ustawiony styl kursora, zignoruje ten ustawiony na body (oczywiście)
- niektóre elementy mają domyślny styl kursora (a) i nie będą wyświetlać kursora oczekiwania po najechaniu
- element body ma określoną wysokość w zależności od zawartości i jeśli strona jest krótka, kursor nie pojawi się pod stopką
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>
Później edycja ...
Działało w Firefox i IE z:
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>
Problem z tym rozwiązaniem (lub jego cechą) polega na tym, że zapobiegnie ono kliknięciom z powodu nakładającego się elementu div (dzięki Kibbee)
Później później edytuj ...
Prostsze rozwiązanie od Dorward:
.wait, .wait * { cursor: wait !important; }
i wtedy
<a href="#" onclick="document.body.className = 'wait'; return false">Do something</a>
To rozwiązanie pokazuje tylko kursor oczekiwania, ale umożliwia kliknięcia.