Чи можна просто встановити курсор на "очікування" на всій сторінці html? Ідея полягає в тому, щоб показати користувачеві, що щось відбувається, поки завершується виклик ajax. У наведеному нижче коді показано спрощену версію того, що я спробував, а також продемонстровано проблеми, з якими я стикаюся:
- якщо для елемента (# id1) встановлено стиль курсору, він буде ігнорувати той, що встановлений на тілі (очевидно)
- деякі елементи мають стиль курсору за замовчуванням (a) і не відображатимуть курсор очікування при наведенні
- елемент body має певну висоту в залежності від вмісту, і якщо сторінка коротка, курсор не відображатиметься під колонтитулом
Тест:
<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>
Пізніше редагувати ...
Це працювало у Firefox та IE з:
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>
Проблема (або особливість) цього рішення полягає в тому, що воно запобіжить клацанню через перекриття div (спасибі Kibbee)
Пізніше редагуйте ...
Більш просте рішення від Dorward:
.wait, .wait * { cursor: wait !important; }
і потім
<a href="#" onclick="document.body.className = 'wait'; return false">Do something</a>
Це рішення відображає лише курсор очікування, але дозволяє клацати.