2010-07-16 58 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()非常容易地发生。将用户输入附加到'