Я добавляю журналы на консоль, чтобы проверить статус разных переменных, не используя отладчик Firefox.
Однако во многих местах, где я добавляю console.log в свой файл main.js , я получаю следующую ошибку вместо моих прекрасных маленьких рукописных сообщений себе:
Synchronous XMLHttpRequest on the main thread is deprecated because of its detrimental effects to the end user’s experience. For more help http://xhr.spec.whatwg.org/
Какие альтернативы или оболочки для console.log можно добавить в мой код, который не вызовет эту ошибку?
Я делаю это неправильно?
20 ответов
Это случилось со мной, когда я ленился и включил тег скрипта в часть возвращаемого содержимого. Таким образом:
Частичное содержание HTML:
По крайней мере, в моем случае, если вы вернете HTML-контент, подобный этому через xhr, вы вызовете jQuery для вызова этого скрипта. Этот вызов происходит с флагом async false, поскольку он предполагает, что для продолжения загрузки потребуется сценарий.
В таких ситуациях, как этот, вам лучше работать, просматривая какую-либо структуру привязки и просто возвращая объект JSON, или в зависимости от вашего бэкэнда и шаблона вы можете изменить способ загрузки ваших скриптов.
Вы также можете использовать % jQuery getScript() для захвата соответствующих скриптов. Вот скрипка. Это просто прямая копия примера jQuery, но я не вижу никаких предупреждений, созданных при загрузке скриптов таким образом.
Пример
Предупреждающее сообщение МОЖЕТ БЫТЬ из-за запроса XMLHttpRequest в основном потоке с флагом async, установленным на false.
Synchronous XMLHttpRequest outside of workers is in the process of being removed from the web platform as it has detrimental effects to the end user’s experience. (This is a long process that takes many years.) Developers must not pass false for the async argument when the JavaScript global environment is a document environment. User agents are strongly encouraged to warn about such usage in developer tools and may experiment with throwing an InvalidAccessError exception when it occurs.
Будущее направление — разрешить только XMLHttpRequests в рабочих потоках. Сообщение должно быть предупреждением об этом.
Я также столкнулся с такой же проблемой, но смог ее исправить, поставив async: true. Я знаю, что это по умолчанию true, но работает, когда я пишу его явно
Живой отладчик Visual Studio 2015/2017 представляет собой код ввода, содержащий устаревший вызов.
Иногда необходимо, чтобы ajax загружал скрипт, но задерживал document ready до загрузки скрипта.
jQuery поддерживает это с помощью функции holdReady() .
Использование примера:
Фактическая загрузка скрипта асинхронна ( без ошибок ), но эффект синхронный, если остальная часть вашего JavaScript работает после документа готова .
This advanced feature would typically be used by dynamic script loaders that want to load additional JavaScript such as jQuery plugins before allowing the ready event to occur, even though the DOM may be ready.
@Webgr частичный ответ на самом деле помог мне отладить это предупреждение @ console log, стыдно, что другая часть этого ответа принесла так много downvotes: (
В любом случае, вот как я узнал, в чем причина этого предупреждения в моем случае:
- Использовать браузер Chrome > Hit F12, чтобы принести DevTools
- Откройте меню ящика (в вертикальных точках Chrome 3 в правом верхнем углу)
- В Консоль > установите флажок Log XMLHttpRequests
- Загрузите свою страницу, которая давала вам ошибку, и наблюдайте, что происходит в каждом запросе ajax в журнале консоли.
В моем случае другой плагин загружал 2 .js библиотеки после каждого вызова ajax, которые абсолютно не требовались и не требовались. Отключение плагина-изгоя удалило предупреждение из журнала. С этого момента вы можете либо попытаться решить проблему самостоятельно (например, ограничить загрузку скриптов на определенные страницы или события — это слишком специфично для ответа здесь), либо обратиться к разработчику плагинов сторонних разработчиков, чтобы решить эту проблему.
Want to be notified of new releases in whatwg/xhr ?
Launching GitHub Desktop .
If nothing happens, download GitHub Desktop and try again.
Launching GitHub Desktop .
If nothing happens, download GitHub Desktop and try again.
Launching Xcode .
If nothing happens, download Xcode and try again.
Launching Visual Studio .
Permalink
| Type | Name | Latest commit message | Commit time |
|---|---|---|---|
| Failed to load latest commit information. | |||
| review-drafts | Review Draft Publication: February 2019 | Feb 18, 2019 | |
| .editorconfig | Editorial: add indexes for terms and IDL | Feb 14, 2017 | |
| .gitattributes | Editorial: add indexes for terms and IDL | Feb 14, 2017 | |
| .gitignore | Meta: Review Draft infrastructure | May 29, 2018 | |
| .pr-preview.json | Meta: fix «md-h1» field in .pr-preview.json | May 9, 2017 | |
| .travis.yml | Meta: update .travis.yml | Dec 20, 2017 | |
| CONTRIBUTING.md | Meta: remove mention of CC0 | Jan 12, 2018 | |
| LICENSE | Meta: use new WHATWG boilerplate and license | Jan 5, 2018 | |
| Makefile | Meta: Review Draft infrastructure | May 29, 2018 | |
| README.md | Meta: Review Draft infrastructure | May 29, 2018 | |
| deploy_key.enc | Meta: enable snapshots | Jan 22, 2017 | |
| xhr.bs | Align with IDL constructor changes | Sep 24, 2019 |
Code of conduct
We are committed to providing a friendly, safe, and welcoming environment for all. Please read and respect the WHATWG Code of Conduct.
We’d love your help fixing outstanding issues. Pull requests for typographical and grammar errors are also most welcome.
We’d be happy to mentor you through this process. If you’re interested and need help getting started, leave a comment on the issue or ask around on IRC.
In short, change xhr.bs and submit your patch, with a good commit message. Consider reading through the WHATWG FAQ if you are new here.
Please add your name to the Acknowledgments section in your first pull request, even for trivial fixes. The names are sorted lexicographically.
For quick local iteration, run make . To verify your changes locally, run make deploy . See more in the WHATWG Contributor Guidelines.
If you can commit to this repository, see the WHATWG Maintainer Guidelines.
Tests can be found in the xhr/ directory of web-platform-tests/wpt.
Пишу новостной сайт. При добавлении статьи на сайт при отправке формы происходит AJAX запрос с валидацией формы на стороне сервера. Если форма прошла валидацию, то я вызываю метод render для отображения страницы оповещения о том, что статья успешно добавлена на сайт. Когда открывается страница оповещения, в консоли выдается следующее:
Однако когда я просто перехожу по страницам сайта в консоли такого нет (хотя вызывается тот же метод render). Я грешу на то, что ошибка появляется, потому что для валидации использовался AJAX запрос, в результате которого я вызываю render для отображения страницы оповещения. Страницы, а не ее части (для чего и нужен AJAX). Да и History.js выдает то, что она уже подключена — как будто у меня поменялась часть страницы, а не вся страница.
Как мне исправить эту ошибку?
P.S. пишу сайт на Kohana, но не стал ее указывать в метках, потому что, как мне кажется, вопрос относится не только к ней.
Если что, вот тот самый метод render:
Он находится в классе:
class Controller extends Kohana_Controller