Как и многие другие, на моем веб-сайте используется jQuery. Когда я открываю инструменты разработчика, я вижу предупреждение о том, что XMLHTTPRequest является
устарело из-за его пагубного воздействия на работу конечного пользователя.
Я продолжил и прочитал часть документации , но она была довольно технической. Может кто-нибудь простыми словами объяснить последствия перехода от XMLHTTPRequest к WHATWG? В нем говорится, что это произошло в 2012 году.
Кроме того, в документации говорится, что синхронный XMLHttpRequest за пределами рабочих процессов находится в процессе удаления с веб-платформы, когда это происходит, если пользовательский агент имел их в службе, нужно ли им изменять свой существующий код?
Ответы:
Чтобы избежать этого предупреждения, не используйте:
в любом из ваших
$.ajax()
звонков. Это единственнаяXMLHttpRequest
устаревшая функция .По умолчанию используется
async: true
, поэтому, если вы вообще никогда не используете эту опцию, ваш код должен быть безопасным, если эта функция когда-либо действительно будет удалена.Однако, вероятно, этого не произойдет - он может быть удален из стандартов, но я уверен, что браузеры будут поддерживать его в течение многих лет. Так что, если по какой-то причине вам действительно нужен синхронный AJAX, вы можете использовать
async: false
и просто игнорировать предупреждения. Но есть веские причины, по которым синхронный AJAX считается плохим стилем, поэтому вам, вероятно, следует попытаться найти способ избежать этого. И люди, которые писали Flash-приложения, вероятно, никогда не думали, что он исчезнет, но сейчас он находится в процессе отказа.Обратите внимание,
Fetch
что заменяющий APIXMLHttpRequest
даже не предлагает синхронный вариант.источник
$.ajax
.jquery.i18n.properties.js
но с моей стороны нет явного вызова$.ajax.
Возможно внутренне, но не уверен..properties
файлов. Вероятно, для этого используется синхронный AJAX, что вызывает это предупреждение.Принятый ответ правильный, но я нашел другую причину, если вы разрабатываете в ASP.NET с Visual Studio 2013 или выше и уверены, что вы не выполняли синхронные запросы ajax и не определяли сценарии в неправильном месте.
Решение состоит в том, чтобы отключить функцию «Ссылка на браузер», сняв флажок «Включить ссылку на браузер» в раскрывающемся списке панели инструментов VS, на который указывает маленький значок обновления, указывающий по часовой стрелке. Как только вы это сделаете и перезагрузите страницу, предупреждения должны прекратиться!
Это должно происходить только при локальной отладке, но все же полезно знать причину предупреждений.
источник
web.config
, добавив<add key="vs:EnableBrowserLink" value="false" />
внутрь,<appSettings>
как описано здесь: poconosystems.com/software-development/… .Это произошло со мной из-за наличия ссылки на внешние js за пределами головы непосредственно перед концом раздела тела. Вы знаете, один из них:
<script src="http://somesite.net/js/somefile.js">
Это не имело никакого отношения к JQuery.
Вы, вероятно, увидите, что то же самое делает что-то вроде этого:
Но я не проверял эту идею.
источник
Это было упомянуто как комментарий @ henri-chan , но я думаю, что он заслуживает большего внимания:
Когда вы обновляете содержимое элемента с помощью нового HTML с помощью jQuery / javascript, и этот новый HTML содержит
<script>
теги, они выполняются синхронно и, таким образом, вызывают эту ошибку. То же самое и с таблицами стилей.Вы знаете, что это происходит, когда вы видите (несколько) скриптов или таблиц стилей, загружаемых, как
XHR
в окне консоли. (Fire Fox).источник
Ни один из предыдущих ответов (которые все верны) не подходил для моей ситуации: я не использую
async
параметр вjQuery.ajax()
и не включаю тег скрипта как часть возвращаемого содержимого, например:Моя ситуация такова, что я вызываю два запроса AJAX последовательно с целью одновременного обновления двух div:
Когда я нажимаю на
a.anchor3
, появляется флаг предупреждения. Я решил проблему, заменив вызов f2click()
функцией:источник
Моя тренировка: я использую асинхронные запросы, сбрасывающие код в буфер. У меня есть цикл, проверяющий буфер каждую секунду. Когда дамп поступил в буфер, я выполняю код. Еще использую тайм-аут. Для конечного пользователя страница работает так, как если бы использовались синхронные запросы.
источник
$.ajax({ url : "example.com", async : true /* default is true */ }).done(function(response){ // Process the dump })
Надеюсь, я ничего не прочитал неправильно.Если мы загрузим скрипт в частичном представлении, эта проблема возникнет
Это решение отлично работает для меня
источник