2013-02-17 17 views
0

我還動態創建一個JavaScript文件使用這些變量:注入的JavaScript動態,並用它

 function callbackF(data){ 
      console.log(data.script); 

      document.getElementsByTagName('head')[0].innerHTML=data.script; 

     var script = document.createElement("script"); 
    script.setAttribute("src", "http://widget.example.com/sprk.1.0.2.js"); 
    script.setAttribute("type", "text/javascript"); 
    script.setAttribute("id", "grazit_script"); 
    document.getElementsByTagName('head')[0].appendChild(script); 
     } 

這是我在我的腦海裏:

這是打印到控制檯日誌:

<script type='text/javascript'>var dbnwid=16476; var dbnpid=23369; var dbnwebid=19720; var dbnlayout=21; var dbncolor='#000000'; var dbntitlefontsize='14'; var dbnbgcolortype=1; var dbnheader='You might enjoy reading:'; var dbnremindercolor=2; var dbn_protocol = (('https:' == document.location.protocol) ? 'https://' : 'http://'); </script> 

,然後腳本:

<script src="http://widget.example.com/sprk.1.0.2.js" type="text/javascript" id="grazit_script"></script> 

第二個腳本應該得到的是在第二script..but變量它doesnt..then它抱怨,爲什麼它沒有得到這些變量

UPDATE: 的下面沒有工作的兩種方式我:

eval(data.script); 
      var ss= new Function(data.script)(); 
+0

什麼是'#spark_static_widget'? – MCL 2013-02-17 11:43:11

+0

忘了它..我會再次編輯我的代碼 – BlackFire27 2013-02-17 11:44:18

+0

如果你說它不起作用,你爲什麼接受答案? – geoidesic 2015-11-01 10:52:50

回答

2

因爲腳本在加載時運行。使用innerHTML添加script標記不會運行標記內的代碼。

+0

嗯..有趣的答案..有沒有一種方法讓外部腳本查看我在頁面上動態放置的變量? – BlackFire27 2013-02-17 11:48:14

+0

是的!也許不是如何OP的試圖完成它,但看看[這個小提琴](http://jsfiddle.net/e7AAm/) – MCL 2013-02-17 11:48:22

+0

這不是我想要完成的閱讀我現在更新的答案。我不能使用eval()? – BlackFire27 2013-02-17 11:49:18