É possível definir o cursor para 'esperar' em toda a página html de uma forma simples? A ideia é mostrar ao usuário que algo está acontecendo enquanto uma chamada ajax está sendo completada. O código abaixo mostra uma versão simplificada do que tentei e também demonstra os problemas que encontro:
- se um elemento (# id1) tiver um estilo de cursor definido, ele irá ignorar o definido no corpo (obviamente)
- alguns elementos têm um estilo de cursor padrão (a) e não mostrarão o cursor de espera ao passar o mouse
- o elemento do corpo tem uma certa altura dependendo do conteúdo e se a página for curta, o cursor não aparecerá abaixo do rodapé
O teste:
<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>
Editar mais tarde ...
Funcionou no firefox e no IE com:
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>
O problema (ou recurso) dessa solução é que ela evitará cliques devido à div sobreposição (obrigado, Kibbee)
Mais tarde, edite mais tarde ...
Uma solução mais simples de Dorward:
.wait, .wait * { cursor: wait !important; }
e depois
<a href="#" onclick="document.body.className = 'wait'; return false">Do something</a>
Esta solução mostra apenas o cursor de espera, mas permite cliques.