在字符串Javascript中运行代码

时间:2016-11-29 16:31:58

标签: javascript string

我在Javascript中有一个变量(字符串),例如你有这个文本:

"document.getElementById('tekst').innerHTML = 'Probeer opnieuw!';"

我使用Ajax和PHP获得了这个变量,但这不是我(可能非常简单)问题的地方。

假设我想将此代码用作代码本身,而不是字符串,因此我不希望这是一个字符串,而是希望它内部的代码能够被执行。

我怎么可能这样做?

提前致谢

3 个答案:

答案 0 :(得分:3)

不要这样做。 It's a security nightmare

如果您真的必须这样做,请使用eval(),如下所示:

eval("document.getElementById('tekst').innerHTML = 'Probeer opnieuw!';");

考虑到您的示例和解释,我怀疑您正在检索其内容完全由javascript组成的网址。您遇到的问题是您用来检索该URL的方法会为您提供包含该javascript的字符串。我相信您打算使用<script>元素来加载该代码。要动态地这样做:

var script = document.createElement("script");
script.src = "url/to/your/javascript";
document.getElementByTagName('body')[0].appendChild(script);

答案 1 :(得分:1)

您可以使用eval()方法。但是,如果你不必这样做,就不要这样做。如果您必须,请确保您知道自己在做什么。

eval("document.getElementById('tekst').innerHTML = 'Probeer opnieuw!';")

答案 2 :(得分:0)

以下是使用eval()的替代方法:

var stringContainingJavascript = "document.getElementById('tekst').innerHTML = 'Probeer opnieuw!';"

var body = document.getElementsByTagName('body')[0];

var paragraph = document.createElement('p');
paragraph.id = 'tekst';
body.appendChild(paragraph);

var script = document.createElement('script');
var scriptText = document.createTextNode(stringContainingJavascript);
script.appendChild(scriptText);
body.appendChild(script);

在将<p>附加到文档的id="tekst"之前,上面的脚本会创建一个<p>元素,并为其提供<body>

然后,相同的脚本会创建一个<script>元素并将字符串附加到该元素,然后将<script>附加到文档的<body>