javascript – 如何执行用户在我的页面上输入ACE编辑器的代码

前端之家收集整理的这篇文章主要介绍了javascript – 如何执行用户在我的页面上输入ACE编辑器的代码前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我在我的页面上使用 ACE Editor作为我的文本编辑器,用户将输入代码.

>我希望尽可能执行用户在浏览器上或浏览器中输入的代码.如何从编辑器获取输入并使用Browsers V8 JavaScript编译器?
>然后我将尝试在Node.js上运行它,但首先我必须学习Node :).

解决方法

使用JavaScript获取一些用户输入的代码并运行它相对简单.从本质上讲,你将从ACE获取代码
var code = editor.getValue();

然后使用javascript运行它.在最简单的层面上你可以做到:

eval(code);

但是,你probably don’t want to use eval().相反,你可能会这样做:

// grabbed from https://stackoverflow.com/questions/6432984/adding-script-element-to-the-dom-and-have-the-javascript-run
var script = document.createElement('script');
try {
  script.appendChild(document.createTextNode(code));
  document.body.appendChild(script);
} catch (e) {
  script.text = code;
  document.body.appendChild(script);
}

这会奏效.但是,它仍然会导致一些问题,因为用户代码可能会影响您的环境.在这种情况下,从安全角度来看可能并不可怕(除非用户可以共享他们的代码),但这会让人感到困惑.因此,你想要sandbox your code.

This answer explains sandboxing client side javascript,使用window.postMessage,您可以将javascript发送到沙盒iframe并在那里进行评估.

如果您希望使用此服务器端并执行节点代码,则需要以不同方式执行沙盒操作.在服务器上,沙盒是一个更令人担忧的问题,因为用户可以使用Javascript做更多事情并且可能恶意地与您的服务器进行交互.幸运的是,有a few sandboxes for Node that should help.

原文链接:https://www.f2er.com/js/153156.html

猜你在找的JavaScript相关文章