-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

您当前的数据似乎是一个 javascript 对象,完美地表示为一个 json 字符串,所以:

// 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 回答