6

是否可以创建类似于:

var jsfile = "code....";
(a=(b=document).createElement('script')).src=jsfile;
b.body.appendChild(a);

其中 'jsfile' 就像一个外部 js 文件,但在我们的例子中是一个变量?

我所有的测试都失败了,我成功地获得了“jsfile”的输入,但是如果 obj 内部有函数(记住我希望它像外部 js 文件一样执行)它们没有执行。

测试示例:

var jsfile = "code....";
(a=(b=document).createElement('script')).text=(jsfile);
b.body.appendChild(a);
4

2 回答 2

8

Try setting a type on the script element, like so (taken from Can't append <script> element):

var script   = document.createElement("script");
script.type  = "text/javascript";
script.src   = "path/to/your/javascript.js";    // use this for linked script
script.text  = "alert('voila!');"               // use this for inline script
document.body.appendChild(script);
于 2012-10-09T17:34:39.610 回答
6

是的,您可以,实际上,该src属性仅用于 javascript 文件路径,如果您想呈现代码,您可以使用该innerText属性:

var code = 'alert("working!")';
var script = document.createElement('script');
script.innerText = code;

document.body.appendChild(script);
于 2012-10-09T17:36:20.573 回答