Как я могу заставить свой курсор перейти на этот значок загрузки при вызове функции и как бы изменить его на обычный курсор в javascript/jquery
Как я могу заставить свой курсор перейти на этот значок загрузки при вызове функции и как бы изменить его на обычный курсор в javascript/jquery
В вашем использовании jQuery:
$("body").css("cursor", "progress");
а затем снова вернуться к нормальной работе
$("body").css("cursor", "default");
Коллега предложил подход, который я считаю предпочтительным для выбранного решения здесь. Во-первых, в CSS добавьте это правило:
body.waiting * {
cursor: progress;
}
Затем, чтобы включить курсор прогресса, скажем:
$('body').addClass('waiting');
и выключить курсор прогресса, скажем:
$('body').removeClass('waiting');
Преимущество такого подхода заключается в том, что при выключении курсора прогресса любые другие курсоры, возможно, были определены в вашем CSS, будут восстановлены.
Если правило CSS недостаточно мощно, чтобы отменить другие правила CSS, вы можете добавить id к телу и правилу или использовать !important
.
Использование jquery и css:
$("#element").click(function(){
$(this).addClass("wait");
});
HTML: <div id="element">Click and wait</div>
CSS: .wait {cursor:wait}
Отменить все отдельные элементы
$("*").css("cursor", "progress");
$('#some_id').click(function() {
$("body").css("cursor", "progress");
$.ajax({
url: "test.html",
context: document.body,
success: function() {
$("body").css("cursor", "default");
}
});
});
Это создаст курсор загрузки, пока ваш вызов ajax не удастся.
Для этого вам не нужен JavaScript. Вы можете изменить курсор на все, что хотите, используя CSS:
selector {
cursor: url(myimage.jpg), auto;
}
Смотрите здесь для поддержки браузера, поскольку есть некоторые тонкие различия в зависимости от браузера
Следующим является мой предпочтительный способ и будет менять курсор каждый раз, когда страница собирается изменить, т.е. beforeunload
$(window).on('beforeunload', function(){
$('*').css("cursor", "progress");
});
JQuery: $("body").css("cursor", "progress");
назад $("body").css("cursor", "default");
Pure: document.body.style.cursor = 'progress';
назад document.body.style.cursor = 'default';
Пожалуйста, не используйте jQuery для этого в 2018 году! Нет никакой причины включать всю внешнюю библиотеку только для того, чтобы выполнить это одно действие, которое может быть достигнуто одной строкой:
Изменить курсор на спиннер: document.body.style.cursor = 'wait';
Вернуть курсор в нормальное состояние: document.body.style.cursor = 'default';
Вот что-то интересное, что вы можете сделать. Определите функцию для вызова непосредственно перед каждым вызовом ajax. Также назначьте функцию для вызова после завершения каждого вызова ajax. Первая функция установит курсор ожидания, а второй очистит ее. Они выглядят следующим образом:
$(document).ajaxComplete(function(event, request, settings) {
$('*').css('cursor', 'default');
});
function waitCursor() {
$('*').css('cursor', 'progress');
}
Если он экономится слишком быстро, попробуйте следующее:
<style media="screen" type="text/css">
.autosave {display: inline; padding: 0 10px; color:green; font-weight: 400; font-style: italic;}
</style>
<input type="button" value="Save" onclick="save();" />
<span class="autosave" style="display: none;">Saved Successfully</span>
$('span.autosave').fadeIn("80");
$('span.autosave').delay("400");
$('span.autosave').fadeOut("80");
Установка курсора для "body" изменит курсор на фон страницы, но не на элементы управления на ней. Например, кнопки будут по-прежнему иметь обычный курсор при наведении на них курсора. Вот что я использую:
Чтобы установить курсор "ожидания", создайте элемент стиля и вставьте его в заголовок:
var css = "* { cursor: wait; !important}";
var style = document.createElement("style");
style.type = "text/css";
style.id = "mywaitcursorstyle";
style.appendChild(document.createTextNode(css));
document.head.appendChild(style);
Затем, чтобы восстановить курсор, удалите элемент стиля:
var style = document.getElementById("mywaitcursorstyle");
if (style) {
style.parentNode.removeChild(style);
}
Я обнаружил, что единственный способ заставить курсор эффективно сбросить свой стиль обратно к тому, что он имел до перехода на стиль ожидания, - это установить исходный стиль в таблице стилей или в тегах стилей в начале страницы. класс рассматриваемого объекта на имя стиля. Затем, после периода ожидания, вы устанавливаете стиль курсора обратно на пустую строку, а НЕ "по умолчанию", и он возвращается к своему первоначальному значению, как установлено в ваших тегах стиля или таблице стилей. Установка этого значения по умолчанию после периода ожидания изменяет стиль курсора только для каждого элемента на стиль, называемый по умолчанию, который является указателем. Это не меняет его обратно на прежнее значение.
Есть два условия, чтобы сделать эту работу. Сначала вы должны установить стиль в таблице стилей или в заголовке страницы с тегами стиля, а НЕ как встроенный стиль, а во-вторых, сбросить его стиль, установив стиль ожидания обратно в пустую строку.