我目前正在开发一个项目,该项目要求我以字符串形式运行用户输入的javascript。
我尝试在html中添加一个空的<script>
标记,然后将该字符串(包含用户新近输入的(在页面加载后) javascript)附加到此脚本标记但是这不起作用。 (因为脚本标记内的代码将在加载页面后立即运行。)
所以我尝试了另一种方法。我把js字符串包装在一个像这样的函数中:
function runCode() { userString }
这就是我现在附加到空脚本标签的字符串如下所示:
var code = "function runCode() { "+ userString +" }"
然而这仍然不起作用。代码(userString)根据chrome dev工具显示在脚本标记中,但尝试运行该函数会导致以下错误:
Uncaught ReferenceError: runCode is not defined
某些背景:
我正在开发的项目是一个使用js绘制的在线工具。这里的目标是使用two.js库并将其链接到修改后的textarea。 (codemirror)单击该按钮将获取您输入的代码并使用它来修改屏幕另一半的two.js画布。
这样可以更容易地使用库进行绘制,因为您不必自己设置所有html,css和js文件,而是可以专注于代码。
注意:你在textarea中输入的js可以是任何有效的js,所以像alert,甚至jQuery行这样简单的东西都可以正常工作。
答案 0 :(得分:4)
使用eval()功能。 但请注意,这是一个巨大的安全漏洞。
答案 1 :(得分:0)
你必须使用eval()。从onclick事件中提取用户输入并将其传递到eval,如下所示:
eval(userString)