我知道這是標題中的一個滿口,但以下是發生了什麼。 。對於具有CSS定義的光標的div,如果鼠標在div無法移動時IE不會自動重置光標
我在我的項目中使用了Eric Martin的SimpleModal插件。當顯示一個模式彈出窗口時,我想將光標顯示爲繁忙,而不是彈出窗口本身,但是在背景的疊加層上。這可以;它的工作原理,我將cursor:wait
添加到覆蓋div的CSS,我不會談論爲什麼我不應該使用忙光標。
彈出窗口顯示webserive調用生命並在完成一些工作後關閉(等待webservice調用返回 - 它正在初始化一些事情,需要幾秒鐘)。因此,如果將鼠標懸停在覆蓋圖上,並保持不變,並且彈出窗口在程序中處於關閉狀態,則光標會保持繁忙狀態,直到您將其移動爲止,即使爲其定義光標CSS的容器不再位於鼠標下方。在Firefox中情況並非如此。
我可以用這個非常簡單的例子重現它。單擊該按鈕,將鼠標移出按鈕但不會彈出(僅在覆蓋層上),將鼠標從鼠標上移開,使其不移動,然後等待彈出框關閉。遊標不會返回到默認遊標。
<html>
<head>
<style type="text/css">
#simplemodal-overlay {
background-color: #000;
cursor: wait;
}
#simplemodal-container {
color: #fff;
background-color: #333;
border: 8px solid #444;
padding: 12px;
width: 300px;
}
</style>
<script type="text/javascript" src="http://code.jquery.com/jquery-latest.js"></script>
<script type="text/javascript" src="http://simplemodal.googlecode.com/files/jquery.simplemodal.1.4.min.js"></script>
<script type="text/javascript">
function modalTest() {
showModal();
setTimeout(function() {
hideModal();
}, 1500);
}
function showModal() {
$("#sample").modal();
}
function hideModal() {
$.modal.close();
}
</script>
</head>
<body>
<button id="actionbutton" onclick="modalTest();">Test</button>
<div id="sample" style="display:none">
<h2>Sample Data</h2>
<p>This is some sample data from the current page</p>
<p>You can press ESC to close this dialog or click <a href="#" class="simplemodal-close">close</a>.</p>
</div>
</body>
</html>
有沒有人有任何建議?我試過其他的東西,比如分配和去除CSS類到主體,並且使用body.wait { cursor: wait; }
,但是對於其中一個,當CSS類被移除時,IE中會出現相同的行爲。
如果我可以在純CSS中保留一個真棒的解決方案,但我對其他任何東西都是開放的。
編輯:
好吧,我就在我提交這個想法和嘗試過了,和它的工作。我會在這裏留下這個問題,以防有人絆倒這一點。這裏的修正:
function hideModal() {
$("#simplemodal-overlay").css("cursor","default");
$.modal.close();
}
編輯2:
IE也如果顯示的彈出窗口,當鼠標不移動不改變到等待光標。看起來,如果鼠標不在運動中,IE忽略光標CSS。
關於同一主題:http://stackoverflow.com/questions/2453807/javascript-mouse-cursor-change-on-page-load-in-firefox-browser-3-5 – 2010-11-04 21:22:15
謝謝!像魅力一樣工作。 – canisrufus 2011-04-22 22:07:06