我知道,在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中做到这一点?
答案 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);