簡體   English   中英

使用JS變量為<script>標記設置src屬性

[英]Use JS variable to set the src attribute for <script> tag

我想在同一個jsp上使用javascript變量作為另一個標記的'src'屬性。

<script>
var link = mylink // the link is generated based on some code
</script>

我想創建這個新元素,如下所示。

<script src="mylink">
</script>

在搜索各種論壇時,我嘗試使用以下選項,但它們似乎不起作用。 我希望這個東西適用於所有主流瀏覽器。

  1. 將此代碼放在第一個元素中。

     var script = document.createElement("script"); script.type = "text/javascript"; script.src = "path/to/somelink"; document.body.appendChild(script); 
  2. 在第一個元素中使用document write方法。

     document.write("<script type='text/javascript' src="+ google.com + "><\\/script>"); 
  3. 試圖在第一個元素中設置JSTL變量並使用它。

     <c:set var="URL" value="mylink"/> 

這些方法都沒有成功。 什么是錯誤的任何建議?

雖然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>

代碼很好.. :)

我使用類似於選擇二的東西。 您的代碼中存在輕微錯誤,因為“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";

你能使用jQuery嗎? 如果是這樣,你可以使用getScript()

http://api.jquery.com/jQuery.getScript/

$.getScript(mylink, function() {
   // do something using the JS that was loaded.
});

嘗試:

(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));

這是做什么的:

  1. 找到頁面上的第一個腳本元素
  2. 使用提供的源創建新的腳本元素。
  3. 然后在第一個現有腳本元素之前插入新元素。
<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. -->

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM