jQuery UI Неопределенный ProgressBar не анимируется под Ruby on Rails

У меня возникают проблемы с правильной работой неопределенного пользовательского интерфейса jQuery в приложении Rails. Я основываю свою работу на демонстрациях API jQuery-UI по адресу http://jqueryui.com/progressbar/ и пытаюсь адаптировать это для своего приложения.

Ключевые части примера кода jQuery, которые я пытаюсь эмулировать:

$(function() { $( "#progressbar" ).progressbar({value: false});
<style> #progressbar .ui-progressbar-value {background-color: #ccc;}</style>
<div id="progressbar"></div>

Ключевые части кода в моем приложении Rails следующие:

application.js:

//= require jquery
//= require jquery_ujs
//= require jquery-ui
//= require_tree ./sitewide

JS для конкретной страницы (event.js) - включен в views / events /new.html.erb:

$(document).ready(function() { $( '#progressbar' ).progressbar();
                               //$( '#progressbar' ).css({background: '#aa0000'});
                               $( '#progressbar' ).progressbar( { value: false } );
                             });

application.css:

@import url(http://code.jquery.com/ui/1.10.2/themes/smoothness/jquery-ui.css);

events.css.scss:

#progressbar .ui-progressbar-value { background-color: #ccc; }

просмотров / События /new.html.erb:

<div id="progressbar"></div>
<%= javascript_include_tag "events" %>

Результирующий HTML на обслуживаемой странице:

<div id="progressbar"></div>
<script src="/assets/events.js?body=1" type="text/javascript"></script>

Этот код создает пустую белую полосу в div индикатора прогресса, а не серую анимированную полосу из демонстрации jQuery. Если я удаляю комментарии в функции document.ready, полоса становится красной (#aa0000), но она по-прежнему не анимированная, просто статическая. Я был бы очень признателен за понимание этого поведения.

Обновление: я нашел следующую ветку - https://forum.jquery.com/topic/progressbar-api-redesign которой говорится, что анимированный оверлейный GIF-файл еще не включен в пакеты тем, поэтому я скачал его и установил его в assets / images / animated-overlay.gif, но он все равно не работает. Я нашел следующие строки в CSS-файле темы Smoothness:

.ui-progressbar .ui-progressbar-overlay {
    background: url("images/animated-overlay.gif");
    height: 100%;
    filter: alpha(opacity=25);
    opacity: 0.25;
}

поэтому я думаю, что я помещаю изображение в нужное место. Какие-либо предложения?

3 ответа

У меня была та же проблема с неопределенным progressbar, Я бы посоветовал вам скачать пакет тем прямо со страницы ThemeRoller( внизу страницы есть ссылка под названием Темы):

http://jqueryui.com/resources/download/jquery-ui-themes-1.10.3.zip

Извлеките конкретную папку темы, которую вы хотите использовать - в вашем случае smoothness, animated-overlay.gif должны быть включены в папку изображений темы.

В моем случае у меня не было этого .gif и поэтому не было никакой анимации. Как только я добавил .gif в теме images папка это просто сработало.:)

Я хотел бы ответить на это, хотя приложение, которое я использую, представляет собой обычный веб-сайт ASP.NET от Jane, а серверный язык - C#.

Я заметил, что в IE 11 фоновый GIF для индикатора выполнения JqueryUI не работал, когда я тестировал свои веб-страницы. Моя главная страница тестирования показывает неопределенный индикатор выполнения, когда я нажимаю кнопку "Поиск", и на сервере появляется POST, чтобы запустить метод на стороне сервера. На этой странице я легко смог установить параметры таким образом, чтобы поиск занимал примерно 30 секунд.

Используя один и тот же код в Firefox или Chrome, фоновая картинка GIF на панели прогресса анимируется очень хорошо, когда я возвращаюсь назад. В IE это не так.

Когда в IE открылось окно DOM Explorer, во время ожидания я смог выбрать div индикатора прогресса в окне "Стили", посмотреть атрибуты CSS и убедиться, что оно определило и сохранило включенный GIF-файл для фона. Это означало, что индикатор выполнения действительно отображал анимированный GIF.

Когда я снял флажок фона в окне "Стили", GIF исчез, как и ожидалось. Когда я перепроверил его, GIF вернулся, но он был анимирован!

В качестве заключительного теста я всегда оставлял индикатор выполнения видимым и запускал приложение. Я заметил, что GIF изначально будет выглядеть анимированным. Однако, когда страница отправляется обратно на сайт и ждет ответа, GIF прекращает анимацию.

Все это, конечно же, обсуждалось и осуждалось в другом посте Stackru.

У меня просто была похожая проблема с приложением MVC4 в ASP.NET.

Моя проблема заключалась в том, что форма сообщения отменила GET анимированного GIF. то есть он был расположен там, где он должен был быть, но не загружался, потому что навигация перенаправила его в другое место заранее.

Я обнаружил это, когда случайно сломал http POST.

Я все еще пытаюсь понять, как заставить анимацию работать, но также отправляю форму.

ОБНОВЛЕНИЕ: Мой (тьфу) хакерский обходной путь на этом этапе состоит в том, чтобы превратить форму в Ajax-форму, используя Microsoft.jQuery.Unobtrusive.Ajax (@Html.BeginForm -> @Ajax.BeginForm), а затем добавить небольшую задержку при отправке формы. через JQuery. Это некрасиво, но пока работает

Другие вопросы по тегам