Предупреждение в консоли браузера. 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 шт):
JS сообщает вам, что синхронные XMLhttp реквесты устарели и вам не следует их использовать. Чтобы его не было, пишите асинхронные реквесты, то есть используйте промисы или колбеки. Почитайте тут.
ОБНОВЛЕНО:
Нашёл причину предупреждения. В функции loadJs создаётся элемент script с атрибутом
src. jQuery пытается динамически подгрузить этот скрипт, используя синхронный запрос, из-за чего и происходит предупреждение.
Следовательно необходимо сделать загрузку этих скриптов асинхронной.
Вот неплохое решение, которое можно с доработками применить к вашему случаю.
А вообще при работе на сервере такой проблемы не будет, ведь статические файлы будут уже загружены, следовательно jQuery не придётся использовать XHR.



