Используйте переменную JS для установки атрибута src для тега <script>
Я хочу использовать переменную javascript как атрибут 'src' для другого тега на том же jsp.
<script>
var link = mylink // the link is generated based on some code
</script>
Я хочу создать этот новый элемент, как показано ниже.
<script src="mylink">
</script>
При поиске на разных форумах я попытался использовать следующие параметры, но они, похоже, не работают. Я хочу, чтобы эта работа работала над всеми основными браузерами.
-
Поместите этот код в первый элемент.
var script = document.createElement("script");
script.type = "text/javascript";
script.src = "path/to/somelink";
document.body.appendChild(script);
-
Используйте метод записи документа в первом элементе.
document.write("<script type='text/javascript' src="+ google.com + "><\/script>");
-
Пытался установить переменную JSTL в первом элементе и использовать ее.
<c:set var="URL" value="mylink"/>
Ни один из этих способов не был успешным. Любые предложения о том, что происходит не так?
Ответы
Ответ 1
Хотя CDATA отлично работает, использование document.createElement также является отличным выбором. Особенно если вы намерены добавить некоторое значение в URL-адрес, скажем, для перебора кеша.
<script type="text/javascript">
var JSLink = "/Folder/sub_folder/version.js?version=" + Math.random();
var JSElement = document.createElement('script');
JSElement.src = JSLink;
JSElement.onload = OnceLoaded;
document.getElementsByTagName('head')[0].appendChild(JSElement);
function OnceLoaded() {
// Once loaded.. load other JS or CSS or call objects of version.js
}
</script>
Код хорошо..:)
Ответ 2
Я использую нечто похожее на выбор два. В вашем коде есть небольшая ошибка, потому что "google.com" должен быть окружен кавычками.
Чтобы улучшить совместимость, вы можете написать ее как:
document.write("<script type='text/javascript' src='"+ x + "'><\/scr" + "ipt>");
В этой ситуации x
будет файлом, который будет включен. Вы можете определить его как:
var x = "http://google.com/script.js";
ИЛИ
var x = "path/to/script.js";
Ответ 3
Можете ли вы использовать jQuery? Если это так, вы можете использовать getScript()
:
http://api.jquery.com/jQuery.getScript/
$.getScript(mylink, function() {
// do something using the JS that was loaded.
});
Ответ 4
Try:
(function(d){
var file = 'yourJS.js';
var ref = d.getElementsByTagName('script')[0];
var js = d.createElement('script');
js.src = file;
ref.parentNode.insertBefore(js, ref);
}(document));
Что это делает:
- Найдите первый элемент script на вашей странице
- Создает новый элемент script с предоставленным источником.
- Затем вставляет этот новый элемент перед первым существующим элементом script.
Ответ 5
<xsl:variable name="Path" select="/root/folder/"></xsl:variable> <!-- Global path variable. -->
<xsl:variable name="myScriptPath" select="concat($Path, 'myScript.js')"></xsl:variable> <!-- Relative script path variable. -->
<script src="{$myScriptPath}"/> <!-- Attach script. -->