微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

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.

原文地址:/js/153156.html

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐