从String执行JavaScript代码(纯JS)

时间:2013-08-26 23:01:57

标签: javascript

我知道,在SO上已经有类似的主题了,答案通常是“你可以使用eval(),但你不应该这样做”。很好的答案,但无论如何eval()并没有解决我的问题。假设我有String var,名为string_code

var GLOBAL_TEST= 'it works';
alert(GLOBAL_TEST);

现在我需要执行它。请注意,它还应定义GLOBAL_TEST,以便稍后使用。使用jQuery,我这样做:

$('body').append('<script>'+string_code+'</script>');

现在,如何在纯JS中做到这一点?

1 个答案:

答案 0 :(得分:1)

非常简单地创建<script>元素并设置其innerHTML属性,然后将其附加到正文:

var s;
s = document.createElement('script');
s.innerHTML = 'alert("works");';
//or in your case
//s.innerHTML = string_code;
document.body.appendChild(s);

请注意,这通常被认为是一种不好的做法,动态添加脚本通常使用外部脚本来完成:

var s;
s = document.createElement('script');
s.src = 'path/to/script.js';
s.onreadystatechange = s.onload = function () {...};
document.getElementsByTagName('head')[0].appendChild(s);