我想实现一种脚本语言来帮助部分自动化公共维基上的某些任务。我无法在服务器上安装Google Caja之类的任何内容或修改wiki软件本身,但我可以安装JavaScript代码以进行客户端执行。因为我的意图是允许普通用户创建和发布脚本,所以使用JavaScript本身是不安全的,可能会导致帐户泄露。
这样的脚本语言实现是否存在,或者如果不存在,是否相对容易创建?我的重点是简化文本处理,Ajax请求和实现。
以下是脚本需要执行的示例任务,取自Wikipedia's procedure for requesting article deletion:
答案 0 :(得分:3)
以下是javascript中的Tcl实现:Tcl in Javascript。
以下是来源:tcl.js。
此处的代码在浏览器中实现了一个实时控制台,可以使用:A little tcl.js console
Tcl可能不是你的一杯茶,但实施看起来相当简单直截了当。这主要是因为tcl本身就是这么简单的语言。您可以使用它来获得有关如何实现变量和函数的想法。
提示:在tcl中,控制结构是函数,因此请查看实现内置函数的位置,以查看for,while和foreach的实现。
答案 1 :(得分:2)
Douglas Crockford的ADsafe应该是JavaScript的安全子集。
它由运行时库(约20 KB缩小)和验证程序(包含在JSLint中)组成。如果Crockford从许可证中删除“软件应该用于好,而不是邪恶”,那么这两个组件都将是与GPL兼容的开源程序。
因为JSLint是一个JavaScript程序,所以它可以完全在Web浏览器中验证用户脚本。这与使用Java编写的Google Caja形成鲜明对比。
答案 2 :(得分:1)
你可以只是沙盒;也就是说,在几个关键变量中作用域,以便用户的代码无法访问不安全的对象。
var execSandboxedJS = function (jsCode) {
var window = document.getElementById('myRootElement');
var document = window;
eval(jsCode);
};
尽管如此,允许用户代码发出ajax请求本身就是不安全的。如果这就是所要求的,我会重新考虑项目的完整性。