Загрузка js и css «по требованию»

Задача: по какому то условию (ну в моем случае это загрузка скрипта «Тура по сайту» если вдруг пользователь его не проходил), необходимо до грузить дополнительные JS и CSS файлы, а по завершению их загрузки — запустить.

Решение:

function TourStart(){
    if ((localStorage.getItem(document.location.pathname+"_tour")==null)||(localStorage.getItem(document.location.pathname+"_tour")==false)){
        element = document.createElement("script");
        element.src = "https://shepherdjs.dev/dist/js/shepherd.js";
        element.addEventListener('load', () => {
            console.log("--загружаем тур!");
            element = document.createElement("script");
            element.src = "/js/tour.min.js";
            document.body.appendChild(element);
        });
        document.body.appendChild(element);
        element = document.createElement("link");
        element.href = "https://shepherdjs.dev/dist/css/shepherd.css";
        element.rel="stylesheet"
        document.body.appendChild(element);        
        
    };
};

console.log("-- main.js загружен");
$(document).ready(function() {
   TourStart(); // стартовать тур по странице если нужно..
});

JavaScript именованные массивы как набор записей

Обычно для этой цели используют конструкцию Map, однако лично мне  не нравится его синтаксис, когда для доступа необходимо использовать get /set. Поэтому я обычно использую создание объекта. Т.е. получается что-то вроде:

 




Javascript: конвертация даты и строки в тип Date

Задача: преобразовать строку вида 18.02.2021 10:12 в переменную javascript типа дата.

Решение: создадим универсальный прототип конвертирования для строки:

Результат:




JavaScript: Проверка пароля на сложность

Задача: необходимо проверить пароль на сложность по критериям:

  •  есть маленькие буквы
  • есть большие буквы
  • есть специальные символы
  • пароль длиннее 7 символов

Ну в принципе подойдет чтото-вроде:

Ну и в нагрузку проверка Email:




JavaScript: строка в число

На JavaScript в отличие от PHP нет «ленивого» перевода строки в число «одной строчкой». Их нужно чуть больше ;), а именно две:

Зачем? А чтобы закрыть случай, когда строка совсем не число. PHP по умолчанию вернул бы 0, а JavaScript возвращает Nan.




1 3 4 5 6 7 11