Ошибка в консоли из-за history.js

Рейтинг: 1Ответов: 1Опубликовано: 12.04.2015

У меня есть сайт, серфинг страниц реализован через history.js, в консоли постоянно висит такое сообщение:

Synchronous XMLHttpRequest on the main thread is deprecated because of its detrimental effects to the end user's experience. For more help, check http://xhr.spec.whatwg.org/.

Из-за чего это? И насколько это критично?

Ответы

▲ 5

Вот так делать не надо:

var xhr = new XMLHttpRequest();
xhr.open("GET", "/query", /*async*/ false); // async=false
xhr.send(null);
if (xhr.status == 200) {
    console.log(xhr.responseText);
}

Вместо этого следует использовать колбэки:

var xhr = new XMLHttpRequest();
xhr.open("GET", "/query"); // async=true
xhr.onload = function (e) {
    if (xhr.readyState == 4 && xhr.status == 200) {
        console.log(xhr.responseText);
    }
};
xhr.send(null);

Первый способ приводит к задержкам реакции на действия пользователя, в новых браузерах считается устаревшим, поэтому делать так не рекомендуется. Сайт-то работать будет, но UX будет подпорчен.