Подтвердить что ты не робот

Используйте переменную 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"/>
    

Ни один из этих способов не был успешным. Любые предложения о том, что происходит не так?

4b9b3361

Ответ 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. -->