1

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

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

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

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

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

4

1 回答 1

2

非常简单地创建<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);
于 2013-08-26T23:07:39.297 回答