Có thể đặt con trỏ "chờ" trên toàn bộ trang html một cách đơn giản không? Ý tưởng là để cho người dùng thấy rằng một cái gì đó đang diễn ra trong khi một cuộc gọi ajax đang được hoàn thành. Đoạn mã dưới đây hiển thị phiên bản đơn giản của những gì tôi đã thử và cũng giải thích các vấn đề tôi gặp phải:
- nếu một phần tử (# id1) có một bộ kiểu con trỏ, nó sẽ bỏ qua một bộ trên nội dung (hiển nhiên)
- một số phần tử có kiểu con trỏ mặc định (a) và sẽ không hiển thị con trỏ chờ khi di chuột
- phần tử nội dung có độ cao nhất định tùy thuộc vào nội dung và nếu trang ngắn, con trỏ sẽ không hiển thị bên dưới chân trang
Các bài kiểm tra:
<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>
Sau đó chỉnh sửa ...
Nó hoạt động trong firefox và IE với:
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>
Vấn đề với (hoặc tính năng của) giải pháp này là nó sẽ ngăn các nhấp chuột vì div chồng chéo (cảm ơn Kibbee)
Sau này chỉnh sửa sau ...
Một giải pháp đơn giản hơn từ Dorward:
.wait, .wait * { cursor: wait !important; }
và sau đó
<a href="#" onclick="document.body.className = 'wait'; return false">Do something</a>
Giải pháp này chỉ hiển thị con trỏ chờ nhưng cho phép nhấp chuột.