Условно импортируйте файлы сценариев

#javascript #html

Вопрос:

В теге я хочу условно импортировать некоторые теги в зависимости от того, был ли задан параметр в URL-адресе.

В настоящее время у меня есть:

 function getURLValues(name) {
  var results = new RegExp('[?amp;]'   name   '=([^amp;#]*)').exec(window.location.href);
  if (results == null) {
    return null;
  } else {
    return results[1] || 0;
  }
}

if ((getURLValues('dev') == "true")) { <
  script src = "localhost:4200/gamefiles/TitleCard.js" > < /script>
} else { <
  script src = "TitleCard.js" > < /script>
} 

Но я не уверен, как или даже возможно распечатать теги сценария.

Ответ №1:

Вам нужно использовать document.createElement() и document.body.append() включить скрипт. Обратите внимание, что сценарии начнут выполняться ПОСЛЕ того, КАК все в теле загрузится.

 var newScript = document.createElement("script")
if ((getURLValues('dev') == "true")) {
  newScript.src = "localhost:4200/gamefiles/TitleCard.js"
} else {
  newScript.src = "TitleCard.js"
}
document.body.append(newScript);
 

Чтобы добавить несколько сценариев одновременно, вы можете использовать element.insertAdjacentHTML(); и троичные, если вам нужно:

 document.body.insertAdjacentHTML("afterbegin", "<script src='"   (getURLValues('dev') == "true" ? "localhost:4200/gamefiles/TitleCard.js" : "TitleCard.js")   "'></script><script src='"   condition ? "script1.js" : "script2.js"   "'></script>");
 

Я использовал "afterbegin" для этой должности. Смотрите дополнительные варианты

Комментарии:

1. Спасибо 🙂 У меня есть большое количество сценариев js для этого (например, 16). Есть ли более автоматизированный способ, которым я мог бы это сделать? Кроме того, будут ли эти сценарии теперь добавляться только к телу, а не к голове?

2. @AndrewJuniorHoward Я добавил более быстрый способ добавления нескольких сценариев. Это в пределах моих знаний. Да, эти сценарии будут добавлены в тело. Однако второй вариант включает в себя возможность добавления в верхнюю часть тела, а не в конец. Скорее всего, он будет загружаться/работать быстрее, когда он будет на вершине.