Предупреждение в консоли браузера. JS/jQuery

[Deprecation] Synchronous XMLHttpRequest on the main thread is deprecated because of its detrimental effects to the end user's experience. For more help, check https://xhr.spec.whatwg.org/. jquery-3.5.1.min.js:2

введите сюда описание изображения

введите сюда описание изображения

введите сюда описание изображения

введите сюда описание изображения

Вылезает такое предупреждение, наверное не критично, но оставлять не хочется. Нашел в инете скрипт, для многоязычности на JS. После его добавления вылезает данная ошибка.

$(document).ready(function() {

    $.urlParam = function(name){
        var results = new RegExp('[\?&]' + name + '=([^&#]*)').exec(window.location.href);
        if (results==null){
           return null;
        }
        else{
           return results[1] || 0;
        }
    }

    function loadJS(file) {
        var jsElm = document.createElement("script");
        jsElm.type = "application/javascript";
        jsElm.src = file;

        $("body").prepend(jsElm);
    }

    if ($.urlParam("lang") == "en") {
        loadJS("languages/lang.en.js");
        $("#lang-en").css("font-weight", "bolder");
    } else if ($.urlParam("lang") == "de") {
        loadJS("languages/lang.de.js");
        $("#lang-de").css("font-weight", "bolder");
    } else {
        loadJS("languages/lang.ru.js");
        $("#lang-ru").css("font-weight", "bolder");
    }

    function fillIn(key, value) {
        document.getElementById(key).innerHTML = value;
    }


    //Fill in translations
    for(var key in lang) {
      fillIn(key, lang[key]);
    }

});

Вот сайт с которого взял, если вдруг полный код нужен, чтобы сюда все не копипастить. http://www.zitnik.si/wordpress/2016/02/21/a-simple-custom-solution-to-multi-language-support-using-js/

Пишут, что причина из за отключенного async, но в скрипте вроде ничего подобного нет, может кто знает в чем проблема?

Заранее спасибо!


Ответы (1 шт):

Автор решения: T0hich71

JS сообщает вам, что синхронные XMLhttp реквесты устарели и вам не следует их использовать. Чтобы его не было, пишите асинхронные реквесты, то есть используйте промисы или колбеки. Почитайте тут.

ОБНОВЛЕНО:

Нашёл причину предупреждения. В функции loadJs создаётся элемент script с атрибутом src. jQuery пытается динамически подгрузить этот скрипт, используя синхронный запрос, из-за чего и происходит предупреждение.

Следовательно необходимо сделать загрузку этих скриптов асинхронной.
Вот неплохое решение, которое можно с доработками применить к вашему случаю.

А вообще при работе на сервере такой проблемы не будет, ведь статические файлы будут уже загружены, следовательно jQuery не придётся использовать XHR.

→ Ссылка