Я знаю, что в названии написано несколько слов, но вот что происходит ...
Я использую в своем проекте подключаемый модуль Эрика Мартина SimpleModal. Когда отображается модальное всплывающее окно, я хочу, чтобы курсор был занят не во всплывающем окне, а в наложении фона. Это хорошо; он работает, я добавил cursor:wait в CSS оверлея div, и я не хочу говорить о том, почему мне не следует использовать курсор занятости.
Всплывающее окно отображается при возникновении вызова webserive и закрывается после выполнения некоторой работы (ожидание возврата вызова веб-службы - некоторые вещи инициализируются и занимает несколько секунд). Итак, если вы наведете указатель мыши на наложение, оставаясь неподвижным, а всплывающее окно программно закрыто, курсор остается занятым, пока вы его не переместите, даже если контейнер, для которого был определен 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; }, но, во-первых, такое же поведение происходит в IE при удалении класса CSS.
Если бы я мог сохранить решение на чистом CSS, это было бы здорово, но я открыт для всего остального.
ИЗМЕНИТЬ:
Хорошо, у меня возникла мысль, когда я отправил это и попробовал, и это сработало. Я собираюсь оставить этот вопрос здесь, на случай, если кто-нибудь наткнется на него. Вот исправление:
function hideModal() {
$("#simplemodal-overlay").css("cursor","default");
$.modal.close();
}
ИЗМЕНИТЬ 2:
IE также не переключается на курсор ожидания, если мышь не двигается при отображении всплывающего окна. Казалось бы, IE игнорирует CSS курсора, если мышь не движется.