6

公開ウィキで特定のタスクを部分的に自動化するのに役立つスクリプト言語を実装したいと考えています。サーバーにGoogle Cajaなどをインストールしたり、wiki ソフトウェア自体を変更したりすることはできませんが、クライアント側で実行する JavaScript コードをインストールすることはできます。私の意図は一般ユーザーがスクリプトを作成して投稿できるようにすることであるため、JavaScript を使用すること自体が安全ではなく、アカウントの侵害につながる可能性があります。

そのようなスクリプト言語の実装は存在しますか?存在しない場合、比較的簡単に作成できますか? 私の焦点は、テキスト処理、Ajax リクエスト、および実装の容易さです。

以下は、スクリプトが実行する必要があるタスクの例です。ウィキペディアの記事の削除を要求する手順から抜粋したものです。

  1. ユーザーに Wiki ページの名前と、それを削除する正当な理由を尋ねます。
  2. そのページのソース コードを取得し、上部に削除通知を追加して、新しいテキストを保存します。
  3. 削除の理由を含む新しいページ (最初のページの名前に基づく名前) を作成します。
  4. ページを編集したユーザーのリストを取得し、最初に作成したページが削除されようとしていることを (ここでも特定のページを編集することによって) 最初のユーザーに通知します。
4

3 に答える 3

3

Javascriptでの Tcl の実装は次のとおりです。 Tcl in Javascript

ソースは次のとおりです: tcl.js

そして、これはブラウザでプレイするライブ コンソールを実装するコードです:小さな tcl.js コンソール

Tcl は好みではないかもしれませんが、実装はかなりシンプルに見えます。これは主に、tcl 自体が非常に単純な言語であるためです。これを使用して、変数と関数を実装する方法についてのアイデアを得ることができます。

ヒント: Tcl では、制御構造は関数であるため、組み込み関数が実装されている場所を調べて、for、while、および foreach の実装を確認します。

于 2010-10-29T02:13:43.350 に答える
2

Douglas CrockfordのADsafeは、JavaScriptの安全なサブセットであると想定されています。

これは、ランタイムライブラリ(最小化された約20 KB)とベリファイア(JSLintに含まれています)で構成されています。Crockfordが「ソフトウェアは悪ではなく善のために使用される」をライセンスから削除した場合、両方のコンポーネントはGPL互換のオープンソースプログラムになります。

JSLintはJavaScriptプログラムであるため、Webブラウザー内で完全にユーザースクリプトを検証できます。これは、Javaで記述されたGoogleCajaとは対照的です。

于 2010-10-29T01:52:21.180 に答える
0

あなたはただサンドボックスすることができます。つまり、ユーザーのコードが安全でないオブジェクトにアクセスできないように、いくつかの重要な変数をスコープします。

var execSandboxedJS = function (jsCode) {
    var window = document.getElementById('myRootElement');
    var document = window;
    eval(jsCode);
};

ただし、ユーザーコードにajaxリクエストを許可すること自体は、本質的に安全ではありません。それが求められているのであれば、私はプロジェクトの健全性を再考します。

于 2010-10-18T06:33:31.050 に答える