2010-07-16 72 views
2

我想附加一個腳本標記,它將一行JavaScript執行到文檔的頭部,而不是追加一個空的腳本標記並使用src屬性。如何附加一行JavaScript(而不是一個exteral .js文件)?

這裏是我到目前爲止有:

<script type="text/javascript"> 
var scriptContents = 'alert("hi")'; 
var theScript = document.createElement('script'); 
theScript.type = 'text/javascript'; 
theScript.appendChild(scriptContents); 
document.getElementsByTagName('head')[0].appendChild(theScript); 
</script> 

這是我遇到的麻煩的appendChild(scriptContents)的一部分。如何更改此選項以使警報顯示在瀏覽器中?

+1

嗯,將給定例子僅僅指剛去 - 你是不同的行爲後,比簡單地使用'eval(theScript)'? – Jake 2010-07-16 17:49:25

+0

是的,我知道這很有趣。我需要使用JavaScript來插入HTML元素,而這個HTML元素是一個帶有一些JavaScript的腳本標記。 – KatieK 2010-07-16 17:51:11

+0

我想你可能誤解了傑克的話。如果你只是想運行一個腳本,你可以使用eval函數。 – lucideer 2010-07-16 19:32:27

回答

6

您需要將其追加爲文本節點。試試這個:

theScript.appendChild(document.createTextNode(scriptContents)); 
4

你不能這樣做

theScript.appendChild(scriptContents);

appendChild()只追加節點,它不能添加文字。你需要做一個文本節點有:

var scriptContents=document.createTextNode('alert("hi");')

然而,正如傑克上面提到的,你可能只想做:

eval('alert("hi")');
+0

var scriptContents = document.createTextNode('alert(「hi」);') 很好用。 從我最早教過eval()= bad。 爲什麼我會用它來代替? – sanepete 2014-08-08 11:01:19

+0

當教授「eval()= bad」時,你需要問自己「爲什麼?」。執行任意用戶輸入是不好的,這可以通過eval()非常容易地發生。將用戶輸入附加到'

  • 11. 附加文件,而不是覆蓋它?
  • 12. 如何加載一個JSON對象,而不是JSON文件
  • 13. 如何將一個JS click事件附加到一個AJAX加載的按鈕?
  • 14. 從兩個JS文件附加到HTML附加'onchange'行爲
  • 15. 如何從另一個js文件回調一個js文件?
  • 16. 如何通過使用附加文件,同時附加一個文本文件
  • 17. 如何附加一個文件,使其生成一個url?
  • 18. 將CSS文件附加到javascript到單個.js文件中
  • 19. 加入給兩行,而不是一個
  • 20. 將js文件附加到一個js文件,但帶有JQuery錯誤!
  • 21. 如何將事件聽者附加到一個對象JS
  • 22. 如何追加一個\線,而不是\ par到一個System.Windows.Forms.RichTextBox
  • 23. 附加一個TabControl到MDI父窗體而不是工具條
  • 24. 創建一個CSV文件,而不是添加到下一列
  • 25. 如何附加到R歷史文件而不是覆蓋?
  • 26. RequireJS加入「.MAP」,以JavaScript的,而不是」 .js文件突然
  • 27. 附加幾個元素,而不是一個與jQuery?
  • 28. 如何從另一個js文件中調用一個js中的JavaScript對象?
  • 29. 如何調用一個.js.erb文件而不是一個.rjs一個
  • 30. vb.net如何可以附加一個文件到另一