Countdown создает счетчик обратного отсчета на странице там, где это необходимо.
Что он делает?
Вы добавляете на страницу элемент с указанной в нем датой, а скрипт заменит его на счетчик, показывающий, сколько еще дней, часов, минут и секунд осталось до достижения этой даты.
Installation
Создание обратного отсчета
Счетчик можно добавить, используя следующий формат:
<span class="countdown" style="display:none;">До Нового года осталось всего <span class="countdowndate">January 01 2027 00:00:00</span>...</span>
Текст, находящийся внутри элемента countdown, будет виден только при активном счетчике. Элемент countdowndate можно сопровождать любым текстом, который не будет меняться.
Код выше дает такой результат:
(Пример обратного отсчета)
Дополнительный элемент с классом nocountdown позволяет указать текст, который будет показываться, пока скрипт загружается или если он не работает. Например, код <span class="nocountdown">Уже почти Новый год!</span> во время загрузки скрипта будет показывать "Уже почти новый год!".
Этот элемент необходимо ставить сразу же после разметки счетчика, как в примере выше.
Часовые пояса
Код выше неудобен тем, что при расчете времени до даты скрипт будет полагаться на системное время читателя. В случае с Новым годом это не страшно, а вот в других случаях может подложить свинью.
Для работы с конкретным часовым поясом или часовой зоной можно использовать два варианта. Самый простой — указать идентефикатор пояса в конце требуемой даты. Например, будем считать относительно североамериканского восточного времени (EST):
<span class="countdowndate">January 01 2027 00:00:00 EST</span>
Хоть этот вариант работает с большинством аббревиатур, с некоторыми зонами, использующими летнее время, такой фокус не пройдет. Например, британское летнее время (British Summer Time, BST) определяться не будет.
Другой и более надежный метод — указать сдвиг относительно всемирного координированного времени (UTC). Предыдущий пример можно переписать следуюшим образом (пояс EST имеет сдвиг в минус пять часов):
<span class="countdowndate">January 01 2027 00:00:00 -0500</span>
Обратите внимание: скрипт не умеет сам переключать время с летнего на зимнее, и это должен делять сам пользователь с помощью одного из двух способов, описанных выше.
Настройки
Завершение отсчета
Таймер подойдет к концу, и что тогда делать? Есть пять вариантов:
- считать дальше, начиная с нуля. Этот вариант используется по умолчанию;
- удалить контейнер счетчика;
- остановить отсчет на нуле;
- заменить счетчик другим элементом;
- вызвать пользовательскую функцию JavaScript.
Продолжение отсчета
Это стандартный вариант, так что тут делать ничего не надо.
Удаление
Добавьте в атрибут контейнера data-end значение remove:
<span data-end="remove" class="countdown" style="display:none;"><!--
-->До Нового года осталось всего <span class="countdowndate">January 01 2027 00:00:00</span>...<!--
--></span>
Остановка
Добавьте в атрибут контейнера data-end значение stop:
<span data-end="stop" class="countdown" style="display:none;"><!--
-->До Нового года осталось всего <span class="countdowndate">January 01 2027 00:00:00</span>...<!--
--></span>
Замена
Добавьте в атрибут контейнера data-end значение toggle. Дополнительно придется указать селектор нужного элемента в атрибуте data-toggle.
<span data-end="toggle" data-toggle=".post-countdown" class="countdown" style="display:none;"><!--
-->До Нового года осталось всего <span class="countdowndate">January 01 2027 00:00:00</span>...<!--
--></span><span class="post-countdown" style="display:none;">C 2027-м годом!</span>
Обратите внимание на точку в начале значения data-toggle! Это значение представляет собой CSS или jQuery-селектор. Таким образом, .name выбирает элементы по классу, а #name — по ID.
Если элемент, на который будет производиться замена, стоит сразу же после счетчика, можно использовать специальное значение data-toggle="next". Это полезно, если несколько обратных отсчетов используются в шаблоне.
Пользовательское действие
Добавьте в атрибут контейнера data-end значение callback. Дополнительно придется указать название вызываемой функции в атрибуте data-toggle.
<span data-end="callback" data-callback="myFunction" class="countdown" style="display:none;"><!--
-->До Нового года осталось всего <span class="countdowndate">January 01 2027 00:00:00</span>...<!--
--></span>
Отсчет будет остановлен на нуле, после чего будет вызвана указанная функция. В ее области видимости ключевое слово this будет обозначать контейнер счетчика. Чтобы скрипт мог обратиться к функции, его нужно указать отдельно:
window.countdownTimer = {
myFunction: function () {
$(this).text("C 2027-м годом!");
}
}
Ведущие нули
По умолчанию ведущие нули отображаются:
0 дней, 0 часов, 10 минут и 10 секунд
Если вы предпочитайте такой вариант:
10 минут и 10 секунд
вам надо добавить в атрибут data-options значение no-leading-zeros:
<span data-options="no-leading-zeros" class="countdown" style="display:none;"><!--
-->До Нового года осталось всего <span class="countdowndate">January 01 2027 00:00:00</span>...<!--
--></span>
Короткий формат
Если вам больше нравится формат типа 2д 5ч 30м 1с, то вам нужно добавить значение short-format в атрибут data-options. Может быть так, что этот атрибут уже определен, и тогда необходимо разделить значения пробелом:
<span data-options="no-leading-zeros short-format" class="countdown" style="display:none;"><!--
-->До Нового года осталось всего <span class="countdowndate">January 01 2027 00:00:00</span>...<!--
--></span>
Динамический контент
Этот скрипт поддерживает содержимое, вставленное динамически (комментарии к статье или предпросмотр в редакторе). Однако, если вы добавляете счетчик средствами JavaScript, вам придется вручную запустить событие с помощью кода ниже:
mw.hook("wikipage.content").fire($("ELEMENT"));
ELEMENT — селектор элемента, в который был добавлен обратный отсчет.
Changelog
| Date | Description | Author |
|---|---|---|
| July 7, 2011 | Added code to allow the definition of singular and plural forms of time. | Eladkse |
| January 31, 2012 | Added localisation code by Dantman. | Eladkse |
| June 28, 2012 | Simplified singular/plural code. | Eladkse |
| December 9, 2012 | Complete rewrite and addition of a few options. | Pecoes |
| June 15, 2017 | Dynamic content support. | Jorgemg14 |
| October 21, 2017 | Added short format option. | Jorgemg14 |