我有一个需要修改的脚本。 目前,脚本会侦听我的键盘输入并输出我想要的内容。
我希望它能做什么,而不是事先将我想要的东西直接放入脚本中,简单地使该文本= .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!")
})()
答案 0 :(得分: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);
。
这意味着你不需要在ajax请求之外初始化e
并防止名称空间污染。
JSON基本上是格式化文本,因此它可以同时解决您最终的“我的数据格式是什么”的问题。