如何在TextArea中运行用户发布的代码

JS How to run code posted by user in a TextArea?

本文关键字:代码 用户 运行 TextArea      更新时间:2023-09-26

我想知道如何在TextArea中运行用户发布的JS代码,当他按下按钮而不刷新整个页面时。我想要一个画布,一个TextArea和一个按钮。当按钮被按下时,它运行来自TextArea的代码,然后在画布上绘制内容。

我知道如何将张贴的代码放入变量字符串。

我不知道的是如何在那个字符串中运行代码。

您应该能够在eval()函数中包装代码。它计算表示为字符串的JavaScript代码。

的例子:

eval(new String("2 + 2")); // returns a String object containing "2 + 2"
eval("2 + 2");             // returns 4

在你的情况下,你需要从文本区读取代码并将其传递给eval(),它可能看起来像这样:

eval(document.getElementById('textareaid').value);

如果是HTML,只需将其发送到一个带有提交按钮的变量,然后单击document . write("变量")。

我知道最安全最简单的方法是使用node.js:

function runStr (i){
    var vm = require ('vm');
    var box = {};
    vm.createContext(box);
    vm.runInContext(`prgm = function(){return ${i};}`, box);
    return box.prgm();
}
console.log(runStr("2 + 2")); // 4