เป็นไปได้ไหมที่จะตั้งค่าเคอร์เซอร์เป็น 'รอ' บนหน้า html ทั้งหมดด้วยวิธีง่ายๆ แนวคิดคือการแสดงให้ผู้ใช้เห็นว่ามีบางอย่างเกิดขึ้นในขณะที่การโทร ajax เสร็จสมบูรณ์ โค้ดด้านล่างแสดงเวอร์ชันที่เรียบง่ายของสิ่งที่ฉันพยายามและยังแสดงให้เห็นถึงปัญหาที่ฉันพบ:
- หากองค์ประกอบ (# id1) มีการตั้งค่ารูปแบบเคอร์เซอร์มันจะไม่สนใจชุดเดียวในร่างกาย (ชัดเจน)
- องค์ประกอบบางอย่างมีลักษณะเคอร์เซอร์เริ่มต้น (a) และจะไม่แสดงเคอร์เซอร์รอเมื่อวางเมาส์เหนือ
- องค์ประกอบของร่างกายมีความสูงที่แน่นอนขึ้นอยู่กับเนื้อหาและหากหน้าสั้นเคอร์เซอร์จะไม่แสดงด้านล่างส่วนท้าย
การทดสอบ:
<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>
โซลูชันนี้แสดงเฉพาะเคอร์เซอร์รอ แต่อนุญาตให้คลิก