Прежде всего, вы должны знать, что если у вас есть курсор, назначенный любому тегу в вашем теле, $('body').css('cursor', 'wait');
не изменит курсор этого тега (как и я, я использую cursor: pointer;
на всех моих тегах привязки ). Возможно, вы захотите сначала посмотреть на мое решение этой конкретной проблемы: курсор ждет вызова ajax
Для проблемы, связанной с обновлением курсора, только когда пользователь перемещает мышь в браузерах webkit, как говорили другие люди, реального решения не существует.
При этом все еще есть обходной путь, если вы динамически добавляете счетчик css к текущему курсору. Это не идеальное решение, потому что вы точно не знаете размер курсора и правильность расположения счетчика.
CSS блесна после курсора: DEMO
$.fn.extend(
{
reset_on : function(event_name, callback)
{ return this.off(event_name).on(event_name, callback); }
});
var g_loader = $('.loader');
function add_cursor_progress(evt)
{
function refresh_pos(e_)
{
g_loader.css({
display : "inline",
left : e_.pageX + 8,
top : e_.pageY - 8
});
}
refresh_pos(evt);
var id = ".addcursorprog"; // to avoid duplicate events
$('html').reset_on('mousemove' + id, refresh_pos);
$(window).
reset_on('mouseenter' + id, function(){ g_loader.css('display', 'inline'); }).
reset_on('mouseleave' + id, function(){ g_loader.css('display', 'none'); });
}
function remove_cursor_progress(evt)
{
var id = ".addcursorprog";
g_loader.css('display', 'none');
$('html').off('mousemove' + id);
$(window).off('mouseenter' + id).off('mouseleave' + id);
}
$('.action').click(add_cursor_progress);
$('.stop').click(remove_cursor_progress);
Вам также необходимо проверить, является ли это сенсорным устройством var isTouchDevice = typeof window.ontouchstart !== 'undefined';
В заключение, вам лучше попытаться добавить на свою страницу статический счетчик или что-то еще, что показывает процесс загрузки, вместо того, чтобы пытаться сделать это с помощью курсора.