2012-11-14 10 views
5

Sto usando Javascript per generare javascript personalizzato aggiuntivo e quindi aggiungerlo al tag HEAD. Il codice qui sotto funziona alla grande aggiungendo un file javascript, ma cosa succede se lo script è in una variabile appena generata?Come aggiungo javascript dinamico al tag head da una stringa, non da un file?

var scriptTag = document.createElement("script"); 
scriptTag.setAttribute("type", "text/javascript"); 
scriptTag.setAttribute("src", "myfile.js"); 
document.getElementsByTagName("head")[0].appendChild(scriptTag); 

Grazie per l'attenzione.

+1

In una variabile come? Il codice sorgente come una stringa? –

risposta

3
// script text 
var txt = "alert('foo');"; 

var scriptTag = document.createElement("script"); 
scriptTag.setAttribute("type", "text/javascript"); 

    // append it in a text node 
scriptTag.appendChild(document.createTextNode(txt)); 
document.getElementsByTagName("head")[0].appendChild(scriptTag); 

FWIW, non occorre un tag script per questo. È possibile utilizzare invece il costruttore Function.

var txt = "alert('foo');"; 

Function(txt)(); 
+0

L'ho capito! TY –

+0

@VincentJames: prego. –

+1

+1 per createTextNode –

3
var scriptTag = document.createElement("script"); 
scriptTag.setAttribute("type", "text/javascript"); 

scriptTag.innerHTML = "What you want here";///.... 

document.getElementsByTagName("head")[0].appendChild(scriptTag); 

Live DEMO

+0

Grazie a Gordon, quando lo faccio ottengo una funzione non trovata. Quando controllo l'elemento con Chrome, mostra il nuovo tag SCRIPT nell'HEAD, ma è sempre vuoto e la stringa assegnata a .innerHTML ha un valore. –

+1

@VincentJames: ti consigliamo di eliminare l'attributo '" src "' che viene aggiunto. –

+0

@VincentJames. Guarda la demo. – gdoron

0

Entrambe le risposte sembrano ok, specialmente quella di @gdoron.

Ho scritto un semplice esempio nel caso in cui si vuole fare la stessa cosa in jQuery: http://jsfiddle.net/bitoiu/EKpGg/

Snippet:

$(function(){ 

    var script = document.createElement('script'); 
    script.type = 'text/javascript'; 
    // script.url = 'some valid url'; 
    $('head').append(script); 
});​ 
Problemi correlati