#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 Я добавил более быстрый способ добавления нескольких сценариев. Это в пределах моих знаний. Да, эти сценарии будут добавлены в тело. Однако второй вариант включает в себя возможность добавления в верхнюю часть тела, а не в конец. Скорее всего, он будет загружаться/работать быстрее, когда он будет на вершине.