Подключение тяжелых библиотек

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


//Вызов функции
$('document').ready(() => {
    loadScript("https://cdn.rawgit.com/openlayers/openlayers.github.io/master/en/v5.3.0/build/ol.js", () => {
        mapInit();
    }
})

//Функция подключения
loadScript = (url, callback) => {

    var script = document.createElement("script")
    script.type = "text/javascript";

    if (script.readyState){  //IE
        script.onreadystatechange = function(){
            if (script.readyState == "loaded" ||
                    script.readyState == "complete"){
                script.onreadystatechange = null;
                callback();
            }
        };
    } else {  //Others
        script.onload = function(){
            callback();
        };
    }

    script.src = url;
    document.getElementsByTagName("head")[0].appendChild(script);
}

//Инициализация карты
mapInit = () => {
    ...
}

Комментарии

Популярные сообщения из этого блога

MODx Evo и ReCaptcha v2

P3D – 3D модель в браузере