/ 

Лайфхак. Номер телефона на сайте

Если у вас небольшой бизнес, магазин или рабочий номер телефона, который отображается на сайте, и нет средств на круглосуточную поддержку по телефону, то лучше, чтобы вам звонили только в рабочее время.

Решение — написать время работы на сайте. В идеале, показать номер если время рабочее. А если нет, то написать время работы и сделать номер телефон полупрозрачным или скрыть.

Если у вас не статический сайт, то лучше реализовать это на сервере. Как это сделать на PHP описано в «блоге Жаржана». Но Jekyll и статические сайты набирают популярность, а в них реализовать это можно только на JavaScript.

Как эксперимент я написал простенькую функцию для этого. В ней не используются новые возможности JS, поскольку этот кусочек будет использоваться как «быстрое решение» и никому не захочется возиться с транспайлерами.

function isGoodTime (params) {
    params = params || {};
    var today = new Date();
    var day = today.getDay();
    var user_offset = today.getTimezoneOffset() / 60 * -1;
    var your_offset = +params.offset || 3;
    var diff_offset = your_offset - user_offset;
    var minutes_now = today.getHours() * 60 + today.getMinutes() + diff_offset * 60;

    if (!params.weekends && (day == 6 || day == 0)) return false;
    if (!params.weekdays && (day > 0 || day < 6)) return false;

    if (day > 0 && day < 6) {
        var wd_from = params.weekdays.from.split(':');
        var wd_to = params.weekdays.to.split(':');
        var from = wd_from[0] * 60 + +wd_from[1];
        var to = wd_to[0] * 60 + +wd_to[1];

        if (minutes_now > from && minutes_now < to) return true;
    } else {
        var we_from = params.weekends.from.split(':');
        var we_to = params.weekends.to.split(':');
        var from = we_from[0] * 60 + +we_from[1];
        var to = we_to[0] * 60 + +we_to[1];

        if (minutes_now > from && minutes_now < to) return true;
    }
    return false;
};

И пример использования:

var available = isGoodTime({
    offset: '+3',
    weekdays: {
        from:   '08:30',
        to:     '16:30',
    },
    weekends: {
        from:   '08:30',
        to:     '15:30',
    }
});
⌘ ⌘ ⌘
Поделиться
Отправить
Как называть переменные
Фронтенд

Как называть переменные

Мой взгляд на соглашения наименования переменных, функций, методов и классов

Плавный, нативный скрол
Фронтенд

Плавный, нативный скрол

Выкиньте лишние библиотеки для прокрутки внутри страницы

На чем тестировать JavaScript фреймворки
Фронтенд

На чем тестировать JavaScript фреймворки

На чем испробовать новую технологию или фреймоврк если нет сайд/пет проекта? Пара интересных задачек в этой заметке.