Насколько нам известно, выполнение любого действия несколько тысяч раз может занимать приличное время.
1. пользователь любит прогресс-бары и счётчики
2. пользователь не любит, когда ничего не происходит
3. пользователь любит возможность остановить происходящее
4. времени на выполнение браузеру может тупо не хватить
Примеры таких задач в битриксе - импорт разнообразных типов, или, как это было у меня - удаление задач в КП по определённому условию. Запускаются такие процессы из браузера по желанию юзверя и должны выполняться, показывая текущий статус обработки.
Оставим оформительскую красоту для дизайнеров и реализуем счётчик и простенький прогресс-бар.
Сначала понимаем, что надо сделать на первом шаге, затем что на втором, и что на шаге n-1 и n. Находим точку повторения и точку окончания. Итого:
Прогресс бар реализую с помощью тега progress. Управлять им очень просто:
* максимальное значение задаётся атрибутом max
* текущее значение задаётся атрибутом value
* можно управлять внешним видом с помощью стилей
* минус у него один - это HTML5 и не всеми он поддерживается. Но я показываю его для примера, так что можете реализовать прогресс-бар по старинке - на дивах =)
Json легко парсит функция JSON.parse, превращающая его в объект, с которым уже можно работать дальше.
Пошаговая заготовка из статьи
Дока по тегу progress
Дока по объекту JSON
И ещё про JSON для тех, кому совсем интересно
1. пользователь любит прогресс-бары и счётчики
2. пользователь не любит, когда ничего не происходит
3. пользователь любит возможность остановить происходящее
4. времени на выполнение браузеру может тупо не хватить
Примеры таких задач в битриксе - импорт разнообразных типов, или, как это было у меня - удаление задач в КП по определённому условию. Запускаются такие процессы из браузера по желанию юзверя и должны выполняться, показывая текущий статус обработки.
Оставим оформительскую красоту для дизайнеров и реализуем счётчик и простенький прогресс-бар.
Сначала понимаем, что надо сделать на первом шаге, затем что на втором, и что на шаге n-1 и n. Находим точку повторения и точку окончания. Итого:
- на странице есть кнопка запуска, информационный блок со статистикой и js-обработчики: запуска процесса и обработки результата
- по клику на кнопке передаём номер шага (и/или другие необходимые параметры)
- ajax-приёмник обрабатывает шаг, формирует json с необходимой информацией для статуса и возвращает его вызывающей функции.
- функция обработки результата парсит инфу, выводит статус, решает, надо ли запускать следующий шаг и, соответственно, запускает следующий шаг или заканчивает работу процесса
Прогресс бар реализую с помощью тега progress. Управлять им очень просто:
* максимальное значение задаётся атрибутом max
* текущее значение задаётся атрибутом value
* можно управлять внешним видом с помощью стилей
* минус у него один - это HTML5 и не всеми он поддерживается. Но я показываю его для примера, так что можете реализовать прогресс-бар по старинке - на дивах =)
Json легко парсит функция JSON.parse, превращающая его в объект, с которым уже можно работать дальше.
Пошаговая заготовка из статьи
Дока по тегу progress
Дока по объекту JSON
И ещё про JSON для тех, кому совсем интересно