jQuery имеет устаревшие синхронные запросы XMLHttpRequest


Как и многие другие, мой сайт использует jQuery. Когда я открываю инструменты разработчика, я вижу предупреждение о том, что XMLHTTPRequest-это

Не рекомендуется из-за его пагубного воздействия на опыт конечного пользователя.

Я пошел дальше и прочел часть документация, но это было довольно технические. Может ли кто-нибудь объяснить последствия перехода от XMLHTTPRequest к WHATWG простыми словами? В нем говорится, что это произошло в 2012 году.

кроме того, в документации говорится, что синхронный XMLHttpRequest вне рабочих находится в процессе удаления с веб-платформы, когда это произойдет, если агент пользователя имел их в службе, им нужно изменить существующий код?

6 104

6 ответов:

чтобы избежать этого предупреждения, не используйте:

async: false

в любой из ваших $.ajax() звонки. Это единственная особенность XMLHttpRequest это устаревшие.

значение по умолчанию async: true, Так что если вы никогда не используете эту опцию вообще, ваш код должен быть безопасным, если функция когда-либо действительно удалена (это, вероятно, не будет-он может быть удален из стандартов, но я уверен, что браузеры будут продолжать поддерживать его в течение многих лет).

принятый ответ правильный, но я нашел другую причину, если вы развиваетесь под ASP.NET с Visual Studio 2013 или выше и уверены, что вы не делали никаких синхронных запросов ajax или не определяли какие-либо сценарии в неправильном месте.

решение состоит в том, чтобы отключить функцию "ссылка браузера", сняв флажок" Включить ссылку браузера " в раскрывающемся списке панели инструментов VS, обозначенном маленьким значком обновления, указывающим по часовой стрелке. Как только вы это сделаете и перезагрузите страницу, предупреждения должны стой!

Disable Browser Link

Это должно происходить только во время отладки локально, но все равно приятно знать причину предупреждений.

Это произошло со мной, имея ссылку на внешний js вне головы непосредственно перед концом секции тела. Вы знаете, один из них:

<script src="http://somesite.net/js/somefile.js">

это не имело никакого отношения к JQuery.

вы, вероятно, увидите то же самое делаешь что-то вроде этого:

var script = $("<script></script>");
script.attr("src", basepath + "someotherfile.js");
$(document.body).append(script);

но я не проверял эту идею.

ни один из предыдущих ответов (которые все правильные) не подходил к моей ситуации: я не использую

моя работа: я использую асинхронные запросы, сбрасывающие код в буфер. У меня есть цикл проверки буфера каждую секунду. Когда дамп прибыл в буфер, я выполняю код. Я также использую тайм-аут. Для конечного пользователя страница работает так, как если бы использовались синхронные запросы.

это было упомянуто в качестве комментария @henri-chan, но я думаю, что это заслуживает большего внимания:

при обновлении содержимого элемента с новым html с помощью jQuery / javascript, и этот новый html содержит <script> теги, они выполняются синхронно и, таким образом, вызывая данную ошибку. То же самое касается таблиц стилей.

вы знаете, что это происходит, когда вы видите (несколько) скрипты или таблицы стилей загружаются как XHR в консоли окно. (браузер Firefox.)