2012-06-22 32 views
18

Quiero usar una variable javascript como un atributo 'src' para otra etiqueta en la misma jsp.Usar la variable JS para establecer el atributo src para la etiqueta <script>

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

Quiero crear este nuevo elemento como se muestra a continuación.

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

Al buscar en varios foros, he intentado utilizar las siguientes opciones, pero parece que no funcionan. Quiero que esto funcione en todos los principales navegadores.

  1. Ponga este código en el primer elemento.

    var script = document.createElement("script"); 
    script.type = "text/javascript"; 
    script.src = "path/to/somelink"; 
    document.body.appendChild(script); 
    
  2. Utilice el método de escritura de documentos en el primer elemento.

    document.write("<script type='text/javascript' src="+ google.com + "><\/script>"); 
    
  3. tratado de establecer una variable JSTL en el primer elemento y utilizarlo.

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

Ninguna de estas formas tuvieron éxito. ¿Alguna sugerencia sobre qué está yendo mal?

+1

hay un script populares cargar utilidad llamada require.js. Optimiza la carga de scripts y las dependencias al hacer que las llamadas síncronas sean asíncronas. Esto puede ser de interés. –

+0

Si obtuvo una respuesta, debe aceptar una de las soluciones. :) o proporciona la respuesta que encontraste útil. – Mahesh

Respuesta

4

Uso algo similar a la segunda opción. Hay un pequeño error en su código porque "google.com" debe estar rodeado por comillas.

para mejorar la compatibilidad, es posible que desee escribir como:

document.write("<script type='text/javascript' src='"+ x + "'><\/scr" + "ipt>"); 

En esta situación, x sería el archivo para ser incluidos. Se puede definir como:

var x = "http://google.com/script.js"; 

O

var x = "path/to/script.js"; 
+0

intenté de esta manera con las comillas, pero no está funcionando, no puedo ver la secuencia de comandos que se agrega en el código fuente. Además, ¿no entendiste por qué dices que tenemos que hacerlo como "'><\/scr" + "ipt>"? cualquier importancia por qué estamos concatenados aquí? – 1985percy

+0

Algunos navegadores, particularmente las versiones anteriores de Internet Explorer, piensan que este es el final de la etiqueta '

2

Probar:

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

Lo que esto hace:

  1. encontrar el primer elemento de script en su página
  2. Crea un nuevo elemento de script con la fuente suministrada.
  3. Luego inserta ese elemento nuevo antes del primer elemento de script existente.
12

Aunque CDATA funciona bien, utilizando document.createElement es también una gran opción .. Sobre todo si tiene la intención de añadir valor a una URL, por ejemplo para la caché revienta ...

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

código bien .. :)

+0

¿Qué tal si necesito cargar varios archivos js? ¿hay una sintaxis específica, o tengo que repetir todo este script? Gracias !! – ChickenWing24

+0

Arrastre todo el script ... Cualquier código que escriba básicamente lo hará. Lo siento por la respuesta tardía. – Mahesh

+0

no le preocupa al hombre. ¡Gracias! :RE – ChickenWing24

0
<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. --> 
Cuestiones relacionadas