2012-01-27 11 views

Respuesta

15

pega este dentro onclick de ese botón (corregir la dirección URL en tercera línea):

var script = document.createElement("script"); 
script.setAttribute("type", "text/javascript"); 
script.setAttribute("src", "url to the script file here"); 
document.getElementsByTagName("head")[0].appendChild(script); 

Ese script comenzará a descargarse inmediatamente después de que se ejecuta la línea 4, y tan pronto como se descargue se ejecutará o será utilizable.

+2

Asegúrate de que haya un elemento principal. De lo contrario, también se agrega al cuerpo. Por cierto, +1 para adherirse a JavaScript puro ya que la pregunta no está etiquetada con jQuery. –

+0

¿Qué sucede si agrego dos scripts con este método? ¿Comenzarán a descargarse al mismo tiempo o el segundo esperará en el primero? –

7

Sí, el jQuery getScript method hace que este trivial:

//on button click event: 
$.getScript(urlOfScript); 

alternativa utilizando sólo métodos JavaScript nativas:

//on button click event: 
var head = document.getElementsByTagName('head')[0]; 
var script = document.createElement('script'); 
script.type = 'text/javascript'; 
script.src = 'urlOfScript'; 
head.appendChild(script); 
1

Todas las buenas respuestas anteriores. También puedes cargar js a través de ajax como cualquier otro fragmento de html. Corto ejemplo:

start.html

<html> 
<head> 
<script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.7.1/jquery.min.js"></script> 
</head> 
<body> 
    <a href="#" onclick="$('#result').load('start.js'); return false;">start</a> 
    <div id="result"></div> 
</body> 
</html> 

start.js

<script type="text/javascript"> 
    alert('Hello world!'); 
</script> 

No es necesario para jQuery Ajax - acabo de utilizar como una prueba rápida del concepto.

0

También hay un método jquery aquí para lograr lo mismo.

let src = 'http://www.example.com/dosome/afsddfa'; 
$('<script>').attr(
{ 
    src: src, 
    type: 'text/javascript' 
}).appendTo('body'); 

Creará un elemento script y lo agregará al cuerpo.

También puede usar .appendTo('head').

Cuestiones relacionadas