Можно ли управлять значком "загрузка" на вкладке браузера?
У меня есть серия вызовов AJAX через jQuery. Когда выполняется вызов ajax, визуальная индикация отсутствует. Обычно, если вы нажмете ссылку или иначе какую-то не-аякс-загрузку, браузер отобразит на вкладке немного значка загрузки.
Есть ли способ сообщить браузеру отобразить этот маленький значок на вкладке? (Их около 30, поэтому я надеюсь избежать изменения каждого из них).
Ответы
Ответ 1
Нет, вы не можете сказать браузеру такую вещь.
Но вы можете сделать свой собственный индикатор загрузки. Включите скрытый элемент в свою разметку, затем используйте ajaxStart
и ajaxStop
события, чтобы контролировать его видимость:
$("#loading_animation").bind({
ajaxStart: function() { $(this).show(); },
ajaxStop: function() { $(this).hide(); }
});
ajaxStart
запускается jQuery, когда запускается запрос ajax, когда никто другой не запускается; ajaxStop
запускается, когда запрос ajax завершается, другие не работают.
Ответ 2
Нет.
Но вы можете изменить css курсора.
body {
cursor:wait;
}
Ответ 3
Вы абсолютно можете. См. Это сообщение: Динамическое изменение значка сайта
Просто создайте анимированный значок графического изображения загрузки и измените значок до его загрузки.
Проблема заключается в том, что у вас нет точного графического изображения загрузки, которое используется конкретным браузером, но я думаю, что сообщение будет эффективно передано.
Ответ 4
Прежде чем попасть в какой-либо код или что-то еще, я просто хочу сказать, что это уродливое решение, но оно действительно работает для меня.
То, что я сделал, это разместить iframe на сайте. Затем я скрываю его с отображением: none в css.
Затем при каждом вызове ajax я перезагружаю iframe новой страницей. Это заставляет браузер отображать загрузку в панели вкладок.
Я знаю, что это не очень хорошее решение, и у него есть некоторые недостатки. Как и вы не можете контролировать продолжительность загрузки, если iframe загружается быстрее, чем ajax. Но я просто бросаю его туда. Может быть, кто-то еще может опираться на концепцию.
Ответ 5
Вот альтернатива.
Перед выполнением вызова вы можете отобразить изображение, а затем в функции (не после вызова) скрыть его снова.