Я получаю предупреждающее сообщение:
Синхронный XMLHttpRequest в основном потоке устарел из-за его пагубных последствий для конечного пользователя. Для получения дополнительной справки отметьте http://xhr.spec.whatwg.org/.
при выполнении асинхронного запроса AJAX, содержащего script (имеющего локальный src
), который вводится в HTML, используя метод $.html()
. Я изменил данный script, содержащий async="async"
, но предупреждение все еще остается.
Я начал отлаживать проблему, обнаружив, что мой добавленный <script>
обрабатывается с помощью вызова jQuery AJAX из jQuery.ajaxTransport
(http://code.jquery.com/jquery-1.10.0.js, # 8663), где async
установлен на false
(вероятно, там, где проблема возникает).
Теперь - что я могу сделать по этому поводу?
Сообщение появляется в новейшей версии Chrome, а также в Firefox.
Пока я не могу предоставить тестовый пример jsfiddle, вот тестовый пример, который отображает проблему:
test.html
<html>
<body>
<script type="text/javascript" src="https://code.jquery.com/jquery-2.1.3.js"></script>
<script>
$(document).ready(function(){
$.ajax({
url: '/response.html',
success: function(response){
$(document.body).html(response);
}
})
});
</script>
</body>
</html>
response.html
<script type="text/javascript" src="/json.js" async="async"></script>
json.js
console.log('hi');
Запрос AJAX не требуется для запуска предупреждения - все, что необходимо, вставляет <script>
test2.html
<html>
<body>
<script type="text/javascript" src="https://code.jquery.com/jquery-2.1.3.js"></script>
<script>
$(document).ready(function(){
$(document.body).html('<script type="text/javascript" src="/json.js" async="async"><\/script>');
});
</script>
</body>
</html>
Стоит отметить, что это было исправлено, за https://github.com/jquery/jquery/issues/2060