Я добавляю логи в консоль для проверки состояния различных переменных без использования отладчика Firefox.
Однако во многих местах, где я добавляю a console.log
в свой main.js
файл, я получаю следующую ошибку вместо моих милых маленьких рукописных сообщений:
Синхронный XMLHttpRequest в основном потоке устарел из-за его пагубных последствий для конечного пользователя. Для получения дополнительной помощи http://xhr.spec.whatwg.org/
Какие альтернативы или обертки для console.log
я могу добавить к своему использованию кода, которые не вызовут эту ошибку?
Я "делаю это неправильно"?
jquery
debugging
firefox
backbone.js
console.log
Натан Басанезе
источник
источник
<script>$.ajaxPrefilter(function( options, originalOptions, jqXHR ) { options.async = true; });</script>
это удалит предупреждение. Вы можете увидеть здесь для того же вопроса.Ответы:
Это случилось со мной, когда я был ленивым и включил тег script как часть возвращаемого содержимого. В качестве таких:
Частичное содержимое HTML:
По крайней мере, в моем случае кажется, что если вы вернете HTML-контент, подобный этому, через xhr, вы заставите jQuery выполнить вызов для получения этого скрипта. Этот вызов происходит с ложным асинхронным флагом, поскольку он предполагает, что для продолжения загрузки необходим скрипт.
В подобных ситуациях вам будет лучше, если вы посмотрите на какую-то обязательную среду и просто вернете объект JSON, или, в зависимости от вашего бэкенда и шаблонов, вы можете изменить способ загрузки своих скриптов.
Вы также можете использовать jQuery
getScript()
для получения соответствующих скриптов. Вот скрипка, это просто прямая копия примера jQuery, но я не вижу никаких предупреждений, когда скрипты загружаются таким образом.пример
http://jsfiddle.net/49tkL0qd/
источник
<script>
как вы сказали в обратном вызове Аякс асинхронного вызова. Мой ajax-вызов асинхронный, однако в обратном вызове, который я выполняю,$('#object').html(data)
где данные представляют собой частьhtml
с<script>
и когда эта строка выполняется, появляется ошибка вjs console
. +1 !!! спасибо:)
.Предупреждающее сообщение МОЖЕТ БЫТЬ вызвано запросом XMLHttpRequest в главном потоке с установленным ложным флагом async.
https://xhr.spec.whatwg.org/#synchronous-flag :
Будущее направление - разрешить XMLHttpRequests только в рабочих потоках. Сообщение предназначено для предупреждения об этом.
источник
console.log
заявитель, направляет эти предупреждения?Я также столкнулся с той же проблемой, но смог исправить ее, поставив async: true. Я знаю, что по умолчанию это правда, но это работает, когда я пишу это явно
источник
Живой отладчик Visual Studio 2015/2017 внедряет код, содержащий устаревший вызов.
источник
Иногда необходимо ajax загрузить скрипт, но отложить готовность документа до окончания загрузки скрипта.
JQuery поддерживает это с помощью
holdReady()
функции.Пример использования:
Фактическая загрузка скрипта является асинхронной ( без ошибок ), но эффект является синхронным, если остальная часть вашего JavaScript выполняется после того, как документ готов .
Документация:
https://api.jquery.com/jquery.holdready
ОБНОВЛЕНИЕ 7 января 2019
От JQMIGRATE :
источник
Чтобы избежать этого предупреждения, не используйте:
в любом из ваших вызовов $ .ajax (). Это единственная особенность XMLHttpRequest, которая устарела.
По умолчанию
JQuery устарел синхронный XMLHTTPRequest
источник
Частичный ответ @Webgr на самом деле помог мне отладить это предупреждение @ консоли журнала, позор другая часть этого ответа принесла так много отрицательных голосов :(
Во всяком случае, вот как я узнал, что послужило причиной этого предупреждения в моем случае:
В моем случае другой плагин загружал 2 библиотеки .js после каждого вызова ajax, которые были абсолютно не нужны и не нужны. Отключение мошеннического плагина удалило предупреждение из журнала. С этого момента вы можете либо попытаться решить проблему самостоятельно (например, ограничить загрузку сценариев определенными страницами или событиями - это слишком специфично для ответа здесь), либо связаться со сторонним разработчиком плагина для его решения.
Надеюсь, это кому-нибудь поможет.
источник
Я смотрел на ответы все впечатляющие. Я думаю, что Он должен предоставить код, который дает ему проблему. Учитывая приведенный ниже пример: если у вас есть скрипт для ссылки на jquery в page.php, вы получите это уведомление.
источник
Я получаю такое предупреждение в следующем случае:
1) файл1, который содержит
<script type="text/javascript" src="/javascript/jquery-1.10.2.js"></script>
. Страница имеет поля ввода. Я ввожу какое-то значение в поле ввода и нажимаю кнопку. Jquery отправляет ввод во внешний файл php.2) внешний файл php также содержит jquery и во внешний файл php я также включен
<script type="text/javascript" src="/javascript/jquery-1.10.2.js"></script>
. Потому что, если это, я получил предупреждение.Удалено
<script type="text/javascript" src="/javascript/jquery-1.10.2.js"></script>
из внешнего php-файла и работает без предупреждения.Как я понимаю при загрузке первого файла (file1), я загружаюсь,
jquery-1.10.2.js
и поскольку страница не перезагружается (она отправляет данные во внешний php-файл с помощью jquery$.post
), тоjquery-1.10.2.js
продолжает существовать. Так что нет необходимости снова загружать его.источник
Я получил это исключение, когда я установил URL в запросе, например, «example.com/files/text.txt». Я изменил URL на « http://example.com/files/text.txt », и это исключение исчезло.
источник
И я получил это исключение для включения одного скрипта can.js в другой, например,
источник
В приложении MVC я получил это предупреждение, потому что я открывал окно Kendo с методом, который возвращал View () вместо PartialView (). View () пытался снова получить все сценарии страницы.
источник
Это происходило со мной в ZF2. Я пытался загрузить модальный контент, но я забыл отключить макет раньше.
Так:
источник
Как @Nycen, я также получил эту ошибку из-за ссылки на Cloudfare. Мой был для плагина Select2 .
чтобы исправить это я просто удалил
и ошибка ушла.
источник
press F12
F1
."Don't show chrome Data Saver warning"
- установите этот флажок."Log XMLHTTPRequest"
- установите этот флажок тоже.наслаждаться
источник
Это решено в моем случае.
Этот ответ был вставлен в эту ссылку
/programming/28322636/synchronous-xmlhttprequest-warning-and-script
источник
В моем случае это было вызвано скриптом flexie, который был частью приложения «Выбор CDNJS», предлагаемого Cloudflare .
По словам Cloudflare "Это приложение устарело в марте 2015 года". Я выключил его, и сообщение исчезло мгновенно.
Вы можете получить доступ к приложениям, посетив https://www.cloudflare.com/a/cloudflare-apps/yourdomain.com
NB: это копия моего ответа на эту тему. Синхронное предупреждение XMLHttpRequest и <script> (я посетил оба, когда искал решение)
источник
Я исправил это с помощью следующих шагов:
источник
В моем конкретном случае я рендерил частичку Rails, без
render layout: false
которой заново рендеринг всего макета, включая все скрипты в<head>
теге. Добавлениеrender layout: false
в контроллер действия исправило проблему.источник
Для меня проблема заключалась в том, что в запросе OK я ожидал, что ответ ajax будет хорошо отформатированной строкой HTML, такой как таблица, но в этом случае на сервере возникла проблема с запросом, перенаправляющая на страницу ошибки, и поэтому возвращал обратно HTML-код страницы с ошибкой (где-то был
<script
тег. Я консоль записал ответ ajax, и тогда я понял, что это не то, чего я ожидал, а затем приступил к отладке.источник
Вопрос был поднят в 2014 году, и сейчас 2019 год, поэтому я думаю, что лучше искать лучший вариант.
Вы можете просто использовать
fetch
API в Javascript, что обеспечивает большую гибкость.например, посмотрите этот код
источник