-4

変更が必要なスクリプトがあります。現在、スクリプトはキーボード入力をリッスンし、必要なものを出力します。

事前に必要なものをスクリプトに直接配置する代わりに、そのテキストを単純に作成する機能= .txtドキュメント内のテキスト。そのため、スクリプトを直接編集する代わりに、ドキュメントを入力して保存します。

例:

$.ajax("/TEST.txt").success(function (text) {  e = text; next() });

上記の例に似たものを、現在持っている以下のものに置き換えたいと思います。

var e = { a: "apple", b:"ball"};

完全な作業コードは下にあります var e はスクリプトの中央付近にあります

javascript: (function () {
    function s(r) {
        var i = r[5];
        if (n && e[i]) {
            var s = w.getTile(r[0], r[1]);
            var a = r[2] * 16 + r[3];
            s._pendingEdits[a].length = 0;
            s.getCell(r[2], r[3]).innerHTML = " ";
            var f = e[i];
            var l = f.split("\n");
            var c = o(l);
            var h = [];
            for (var p = 0; p < l.length; p++) {
                var d = l[p].replace("{b}", "");
                for (var v = 0; v < d.length; v++) {
                    t = Math.max(t, v + 1);
                    var m = u(r, d.charAt(v), v, -c + p + 1);
                    var s = w.getTile(m[0], m[1]);
                    if (!Permissions.can_edit_tile(w.userModel, w.worldModel, s)) continue;
                    s && s.tellEdit(m[2], m[3], m[5], m[4]);
                    var g = s.getCell(m[2], m[3]);
                    g.innerHTML = Helpers.escapeChar(m[5]);
                    h.push(m)
                }
            }
            return h
        } else {
            return [r]
        }
    }

    function o(e) {
        var t = 0;
        for (var n = 0; n < e.length; n++) {
            t++;
            if (e[n].indexOf("{b}") >= 0) {
                break
            }
        }
        return t
    }

    function u(e, t, n, r) {
        var i = f(a(e[0], e[2], 8) + r, 8);
        var s = f(a(e[1], e[3], 16) + n, 16);
        return [i[0], s[0], i[1], s[1], e[4] + 10, t]
    }

    function a(e, t, n) {
        return n * e + t
    }

    function f(e, t) {
        return [Math.floor(e / t), ((e < 0 ? t : 0) + e % t) % t]
    }

    function l(e) {
        if (e.keyCode === $.ui.keyCode.ENTER) {
            t = r
        }
        d.call(this, e);
        t = 1
    }

    function h(e, t) {
        c[e] = w[e];
        w[e] = function () {
            w._super = function () {
                c[e].apply(w, arguments)
            };
            t.apply(w, arguments)
        }
    }

    function p(e) {
        if (e.which == 3) {
            console.log("Big Font Turned Off");
            STOP_POST = true;
            $(document).unbind("keydown", l).bind("keydown", d);
            $(window).unbind("mousedown", p);
            for (var t in c) {
                w[t] = c[t]
            }
        }
    }
    var e = {

      a: "apple",
      b:"ball"
    };
    var t = 1,
        n = false,
        r = 1;
    for (var i in e) {
        r = Math.max(r, e[i].split("\n").length)
    }
    var c = {};
    h("typeChar", function (e) {
        n = true;
        var t = this._super(e);
        n = false;
        return t
    });
    h("moveCursor", function (e, n) {
        for (var r = 0; r < t; r++) {
            n = this._super.call(this, e, n)
        }
        t = 1
    });
    h("queueEdit", function (e) {
        var t = s(e);
        for (var n = 0; n < t.length; n++) {
            this._super(t[n])
        }
    });
    h("sendEdits", function () {
        if (!this._edits.length) return;
        jQuery.ajax({
                type: "POST",
                url: window.location.pathname,
                data: {
                    edits: JSON.stringify(this._edits.splice(0, 199))
                },
                success: this.editsDone,
                dataType: "json",
                error: this.editsError
            });
        return this._edits = []
    });
    h("editsDone", function () {
        if (this._edits.length > 0) {
            this.sendEdits()
        }
        return this._super.apply(this, arguments)
    });
    var d = $(document).data("events").keydown[0].handler;
    $(document).unbind("keydown", d);
    $(document).bind("keydown", l);
    $(window).bind("mousedown", p);
    console.log("Big Font Turned On!")
})()
4

1 に答える 1

0

あなたの現在のデータは、json文字列として完全に表現されたjavascriptオブジェクトのようです。

// Javascript file
var e = "";

$.ajax({
  dataType: "json",
  url: "/TEST.json",
  success: function (data) {  
    e = data; 
    next();
  })
});

// TEST.json
{
  "a" : "Text1",
  "b" : "Text2"
}

next() 関数を使用してスクリプトを e 変数で初期化すると仮定しますが、e 変数を次の関数の引数として渡すことでこれを改善できると思いますnext(e);

eこれは、ajax リクエストの外部で初期化する必要がなく、名前空間の汚染を防ぐことを意味します。

JSON は基本的に書式設定されたテキストであるため、最終的な「データ形式はどうなるか」という問題を同時に解決します。

于 2013-06-06T16:43:40.700 に答える