2015-07-06 5 views
0

я испытывал и посмотреть, если я могу использовать JavaScript для загрузки .js после того, как документ будет готов, и получил это предупреждение от хрома:Что такое синхронный XMLHttpRequest?

«Синхронный XMLHttpRequest в основном потоке является устаревшим из-за его вредное воздействие к опыт конечного пользователя ».

Мои коды, как:

$(document).ready(function(){ 
    var s=$('<script src="test.js"></script>'); 
    $('body').append(s); 
}); 

Мои вопросы:

1) В этом случае, что считается "Синхронный XMLHttpRequest"? Я думаю, что это связано с загрузкой «test.js», но если я изменю его на var s=$('<img src="image.png"></img>');, предупреждающее сообщение не будет отображаться.

2) Если файл .js должен быть загружен таким образом, что такое лучшая практика?

*********** *********** Editting

Содержание test.js является

console.log(document.getElementsByTagName('h1')) 

Существует в h1 HTML.

+0

http://stackoverflow.com/questions/950087/include-a-javascript-file-in-another-javascript-file –

+4

Это не синхронный XMLHttpRequest. Вероятно, этот JS-файл. – SLaks

+0

Содержимое test.js - это просто 'console.log (document.getElementsByTagName ('h1'))', я редактирую это в основной поток. – shenkwen

ответ

1

Я считаю, что ваша проблема в связи с async

В HTML5: async, defer, вы можете сказать, браузер, когда для запуска кода JavaScript. Есть 3 варианта:

<script  src="myscript.js"></script> 

<script async src="myscript.js"></script> 

<script defer src="myscript.js"></script> 
  1. Без async или defer, браузер будет запускать скрипт немедленно, перед визуализацией элементов, что это ниже вашего сценария тега.
  2. С async (асинхронный) браузер продолжит загружать страницу HTML и отображать ее во время загрузки браузера и выполнять сценарий по адресу в то же время.
  3. С defer браузер запустит ваш скрипт, когда страница закончится разбор. (. Нет необходимости финишной загрузки всех файлов изображений Это хорошо.)

Я нашел ответ ниже: synchronous-xmlhttprequest-on-the-main-thread-is-deprecated

Использования JQuery для добавления тега сценария в документ будет вызывать его нагрузки сценарий с async:false и вызвать это предупреждение.

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

Не тестировалось. Просто чтобы ты знал.

Смежные вопросы