如何在页面上键入js运行

时间:2016-09-01 07:41:42

标签: javascript html dynamic

我目前正在开发一个项目,该项目要求我以字符串形式运行用户输入的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行这样简单的东西都可以正常工作。

2 个答案:

答案 0 :(得分:4)

使用eval()功能。 但请注意,这是一个巨大的安全漏洞。

答案 1 :(得分:0)

你必须使用eval()。从onclick事件中提取用户输入并将其传递到eval,如下所示:

eval(userString)