ЯШ: Когда исполняются динамически вставленные скрипты? - PullRequest
0 голосов
/ 24 мая 2018

Я хочу сделать AJAX-вызов в верхней части головы и, как только это будет сделано, вставить скрипт с его содержимым в зависимости от результата AJAX-вызова.Примерно так:

var request = new XMLHttpRequest();
  request.open('GET', 'https://mypage.com/');
  request.setRequestHeader('Accept', 'application/json');
  request.onreadystatechange = function () {
    if (this.readyState === 4 && this.status === 200) {
      var result = JSON.parse(this.responseText);
      if (result.foo === 'bar') {
        insertScript('bar');
      } else {
        insertScript('not bar');
      }
    }
  };
  request.send();
}

Вставить код сценария:

function insertScript (msg) {
  var script = document.createElement("script");
  var content = "console.log('" + msg + "');";
  var inlineScript = document.createTextNode(content);
  script.appendChild(inlineScript);
  document.head.appendChild(script);
}

Так что теперь мне интересно: Когда исполняется сценарий? Я хочу его выполнитьБыстро настолько, насколько это возможно.Это привязывается к голове.Что если дом-парсер уже достиг тела?Будет ли он останавливаться и выполнять новый сценарий в голове в первую очередь?Будет ли он все рендерить, а затем выполнить скрипт?

1 Ответ

0 голосов
/ 24 мая 2018

Он выполнит скрипт немедленно.Но, для безопасности, вы можете добавить самодействующую функцию, как показано ниже: -

var script = document.createElement("script");
var content = "(function selfCallableFunction(){console.log('" + msg + "');})()";
var inlineScript = document.createTextNode(content);
script.appendChild(inlineScript);
document.head.appendChild(script);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...