我如何理解这个明显故意模糊的 JS 代码?



我正在尝试编写自己的私有接口,以便在 Stack 上提问(不使用 API,这需要一个帐户,这违背了拥有最少匿名性的意义(,因为我非常喜欢在我自己的"控制面板"中拥有自己的表单,在那里我可以根据自己的设置键入它。

在花费了无数个小时之后,我得出的结论是,Stack 完全拒绝任何试图在没有启用 JavaScript 的情况下发布帖子的人。当在普通浏览器中启用JavaScript时,它会获取各种.js文件,这些文件通过一些非常复杂的方式生成一个字符串,并将其放入隐藏的表单字段"i1l"中(从一开始就不存在于HTML中(。

我煞费苦心地对此进行了逆向工程,但我卡在了最后一步,它因模糊的代码而变得疯狂。这就是它是如何做到的(这些片段来自几个不同的.js文件,并且已被美化,以便在这里以更理智的方式显示它们(:

它使用 JS 添加隐藏表单元素的部分:

"loadTicks": function(e) {
var t;
t = e ? e.find(".edit-block") : $(".edit-block"), 0 === t.find("input[name=i1l]").length && (t.data("loading-ticks") || (t.data("loading-ticks", !0), $.ajax({
"url": "/questions/ticks",
"cache": !1,
"success": function(e) {
t.append("<input type='hidden' name='i1l' value='" + e + "' />")
},
"complete": function() {
t.data("loading-ticks", !1)
}
})))
},

如您所见,它将值设置为"e",这是随函数调用发送到 loadTicks 的任何值。loadTicks被提及为:

f = function() {
return StackExchange.helpers.loadTicks(s), d.unbind("keydown", f), !0
};

如您所见,它使用"s"变量调用它,该变量之前定义为:

var s = new Markdown.Converter({
"nonAsciiLetters": !0,
"asteriskIntraWordEmphasis": StackExchange.settings.markdown.asteriskIntraWordEmphasis,
"autoNewlines": StackExchange.settings.markdown.autoNewlines,
"linkEmails": StackExchange.settings.markdown.linkEmails,
"codeFences": !StackExchange.settings.markdown.disableCodeFences
});

这就是它变得非常疯狂的地方。"s"变量设置为Markdown.Converter(...(的结果。该函数或一系列函数(此时这甚至是有效的JavaScript吗?显然...(,看起来像这样:

Markdown.Converter = function(t) {
function i(e) {
return e = e.replace(/^[ ]{0,3}[([^[]]+)]:[ t]*n?[ t]*<?(S+?)>?(?=s|$)[ t]*n?[ t]*((n*)["(](.+?)[")][ t]*)?(n+)/gm, function(e, t, n, r, i, o, a) {
return t = t.toLowerCase(), U.set(t, _(n)), i ? r + a : (o && B.set(t, o.replace(/"/g, "&quot;")), "")
})
}
function o(e) {
return e = e.replace(/^(<(p|div|h[1-6]|blockquote|pre|table|dl|ol|ul|script|noscript|form|fieldset|iframe|math|ins|del)b[^r]*?n</2>[ t]*(?=n+))/gm, s), e = e.replace(/^(<(p|div|h[1-6]|blockquote|pre|table|dl|ol|ul|script|noscript|form|fieldset|iframe|math)b[^r]*?.*</2>[ t]*(?=n+)n)/gm, s), e = e.replace(/n[ ]{0,3}((<(hr)b([^<>])*?/?>)[ t]*(?=n{2,}))/g, s), e = e.replace(/nn[ ]{0,3}(<!(--(?:|(?:[^>-]|-[^>])(?:[^-]|-[^-])*)--)>[ t]*(?=n{2,}))/g, s), e = e.replace(/(?:nn)([ ]{0,3}(?:<([?%])[^r]*?2>)[ t]*(?=n{2,}))/g, s)
}
function a(e) {
return e = e.replace(/(^n+|n+$)/g, ""), "nn§K" + (q.push(e) - 1) + "Knn"
}
function s(e, t) {
return a(t)
}
function l(e, n, r, i) {
e = N.preBlockGamut(e, W), t.codeFences && !i && (e = w(e)), e = m(e);
var a = "<hr />n";
return e = e.replace(/^[ ]{0,2}( ?*){3,}[ t]*$/gm, a), e = e.replace(/^[ ]{0,2}( ?-){3,}[ t]*$/gm, a), e = e.replace(/^[ ]{0,2}( ?_){3,}[ t]*$/gm, a), e = v(e), e = y(e), e = E(e), e = N.postBlockGamut(e, W), e = o(e), e = C(e, n, r)
}
function c(e) {
return e = N.preSpanGamut(e), e = x(e), e = u(e), e = T(e), e = p(e), e = d(e), e = A(e), e = e.replace(/§P/g, "://"), e = _(e), e = H(e), e = t.autoNewlines ? e.replace(/n/g, "<br>n") : e.replace(/  +n/g, " <br>n"), e = N.postSpanGamut(e)
}
function u(e) {
var t = /(<[a-z/!$]("[^"]*"|'[^']*'|[^'">])*>|<!(--(?:|(?:[^>-]|-[^>])(?:[^-]|-[^-])*)--)>)/gi;
return e = e.replace(t, function(e) {
var t = e.replace(/(.)</?code>(?=.)/g, "$1`");
return t = L(t, "!" == e.charAt(1) ? "\`*_/" : "\`*_")
})
}
function d(e) {
return -1 === e.indexOf("[") ? e : (e = e.replace(/([((?:[[^]]*]|[^[]])*)][ ]?(?:n[ ]*)?[(.*?)])()()()()/g, f), e = e.replace(/([((?:[[^]]*]|[^[]])*)]([ t]*()<?((?:([^)]*)|[^()s])*?)>?[ t]*((['"])(.*?)6[ t]*)?))/g, f), e = e.replace(/([([^[]]+)])()()()()()/g, f))
}
function f(e, t, n, r, i, o, a, s) {
void 0 == s && (s = "");
var l = t,
c = n.replace(/:///g, "§P"),
u = r.toLowerCase(),
d = i,
f = s;
if ("" == d)
if ("" == u && (u = c.toLowerCase().replace(/ ?n/g, " ")), d = "#" + u, void 0 != U.get(u)) d = U.get(u), void 0 != B.get(u) && (f = B.get(u));
else {
if (!(l.search(/(s*)$/m) > -1)) return l;
d = ""
}
d = M(d);
var p = '<a href="' + d + '"';
return "" != f && (f = h(f), f = L(f, "*_"), p += ' title="' + f + '"'), p += ">" + c + "</a>"
}
function p(e) {
return -1 === e.indexOf("![") ? e : (e = e.replace(/(![(.*?)][ ]?(?:n[ ]*)?[(.*?)])()()()()/g, g), e = e.replace(/(![(.*?)]s?([ t]*()<?(S+?)>?[ t]*((['"])(.*?)6[ t]*)?))/g, g))
}
function h(e) {
return e.replace(/>/g, "&gt;").replace(/</g, "&lt;").replace(/"/g, "&quot;").replace(/'/g, "&#39;")
}
function g(e, t, n, r, i, o, a, s) {
var l = t,
c = n,
u = r.toLowerCase(),
d = i,
f = s;
if (f || (f = ""), "" == d) {
if ("" == u && (u = c.toLowerCase().replace(/ ?n/g, " ")), d = "#" + u, void 0 == U.get(u)) return l;
d = U.get(u), void 0 != B.get(u) && (f = B.get(u))
}
c = L(h(c), "*_[]()"), d = L(d, "*_");
var p = '<img src="' + d + '" alt="' + c + '"';
return f = h(f), f = L(f, "*_"), p += ' title="' + f + '"', p += " />"
}
function m(e) {
return e = e.replace(/^(.+)[ t]*n=+[ t]*n+/gm, function(e, t) {
return "<h1>" + c(t) + "</h1>nn"
}), e = e.replace(/^(.+)[ t]*n-+[ t]*n+/gm, function(e, t) {
return "<h2>" + c(t) + "</h2>nn"
}), e = e.replace(/^(#{1,6})[ t]*(.+?)[ t]*#*n+/gm, function(e, t, n) {
var r = t.length;
return "<h" + r + ">" + c(n) + "</h" + r + ">nn"
})
}
function v(e, t) {
e += "§0";
var n = /^(([ ]{0,3}([*+-]|d+[.])[ t]+)[^r]+?(§0|n{2,}(?=S)(?![ t]*(?:[*+-]|d+[.])[ t]+)))/gm;
return z ? e = e.replace(n, function(e, n, r) {
var i, o = n,
a = r.search(/[*+-]/g) > -1 ? "ul" : "ol";
"ol" === a && (i = parseInt(r, 10));
var s = b(o, a, t);
s = s.replace(/s+$/, "");
var l = "<" + a;
return i && 1 !== i && (l += ' start="' + i + '"'), s = l + ">" + s + "</" + a + ">n"
}) : (n = /(nn|^n?)(([ ]{0,3}([*+-]|d+[.])[ t]+)[^r]+?(§0|n{2,}(?=S)(?![ t]*(?:[*+-]|d+[.])[ t]+)))/g, e = e.replace(n, function(e, t, n, r) {
var i, o = t,
a = n,
s = r.search(/[*+-]/g) > -1 ? "ul" : "ol";
"ol" === s && (i = parseInt(r, 10));
var l = b(a, s),
c = "<" + s;
return i && 1 !== i && (c += ' start="' + i + '"'), l = o + c + ">n" + l + "</" + s + ">n"
})), e = e.replace(/§0/, "")
}
function b(e, t) {
z++, e = e.replace(/n{2,}$/, "n"), e += "§0";
var n = K[t],
r = new RegExp("(^[ \t]*)(" + n + ")[ \t]+([^\r]+?(\n+))(?=(§0|\1(" + n + ")[ \t]+))", "gm"),
i = !1;
return e = e.replace(r, function(e, t, n, r) {
var o = r,
a = /nn$/.test(o),
s = a || o.search(/n{2,}/) > -1,
c = s || i;
return o = l(R(o), !0, !c), i = a, "<li>" + o + "</li>n"
}), e = e.replace(/§0/g, ""), z--, e
}
function y(e) {
return e += "§0", e = e.replace(/(?:nn|^n?)((?:(?:[ ]{4}|t).*n+)+)(n*[ ]{0,3}[^ tn]|(?=§0))/g, function(e, t, n) {
var r = t,
i = n;
return r = k(R(r)), r = O(r), r = r.replace(/^n+/g, ""), r = r.replace(/n+$/g, ""), r = "<pre><code>" + r + "n</code></pre>", "nn" + r + "nn" + i
}), e = e.replace(/§0/, "")
}
function w(e) {
return e = e.replace(/(?:n|^)([ ]{0,3})(([`~])3{2,})([^`n]*)(?=n)([^r]*?)(?:(nn$)|n([ ]{0,3})23*[ ]*(?=n|$))/g, function(e, t, n, r, i, o, s) {
if (o.length && (o = o.substr(1)), t.length) {
var l = new RegExp("^[ ]{1," + t.length + "}", "gm");
o = o.replace(l, "")
}
i = i.trim();
var c = "";
/^[a-z0-9#+-.]+$/i.test(i) && (c = "<!-- language: " + i + " -->nn");
var u = "<pre><code>" + k(o) + "n</code></pre>";
return u = a(u), "nn" + c + u + (s || "")
})
}
function x(e) {
return e = e.replace(/(^|[^\`])(`+)(?!`)([^r]*?[^`])2(?!`)/gm, function(e, t, n, r) {
var i = r;
return i = i.replace(/^([ t]*)/g, ""), i = i.replace(/[ t]*$/g, ""), i = k(i), i = i.replace(/:///g, "§P"), t + "<code>" + i + "</code>"
})
}
function k(e) {
return e = e.replace(/&/g, "&amp;"), e = e.replace(/</g, "&lt;"), e = e.replace(/>/g, "&gt;"), e = L(e, "*_{}[]\`~", !1)
}
function S(e) {
return -1 === e.indexOf("*") && -1 === e.indexOf("_") ? e : (e = F(e), e = e.replace(/(^|[W_])(?:(?!1)|(?=^))(*|_)2(?=S)([^r]*?S)22(?!2)(?=[W_]|$)/g, "$1<strong>$3</strong>"), e = e.replace(/(^|[W_])(?:(?!1)|(?=^))(*|_)(?=S)((?:(?!2)[^r])*?S)2(?!2)(?=[W_]|$)/g, "$1<em>$3</em>"), V(e))
}
function $(e) {
return -1 === e.indexOf("*") && -1 === e.indexOf("_") ? e : (e = F(e), e = e.replace(/(?=[^r][*_]|[*_])(^|(?=W__|(?!*)[W_]**|w**w)[^r])(**|__)(?!2)(?=S)((?:|[^r]*?(?!2)[^r])(?=S_|w|S**(?:[W_]|$)).)(?=__(?:W|$)|**(?:[^*]|$))2/g, "$1<strong>$3</strong>"), e = e.replace(/(?=[^r][*_]|[*_])(^|(?=W_|(?!*)(?:[W_]*|D*(?=w)D))[^r])(*|_)(?!222)(?=S)((?:(?!2)[^r])*?(?=[^s_]_|(?=w)D*D|[^s*]*(?:[W_]|$)).)(?=_(?:W|$)|*(?:[^*]|$))2/g, "$1<em>$3</em>"), V(e))
}
function E(e) {
return e = e.replace(/((^[ t]*>[ t]?.+n(.+n)*n*)+)/gm, function(e, t) {
var n = t;
return n = n.replace(/^[ t]*>[ t]?/gm, "§0"), n = n.replace(/§0/g, ""), n = n.replace(/^[ t]+$/gm, ""), n = l(n), n = n.replace(/(^|n)/g, "$1  "), n = n.replace(/(s*<pre>[^r]+?</pre>)/gm, function(e, t) {
var n = t;
return n = n.replace(/^  /gm, "§0"), n = n.replace(/§0/g, "")
}), a("<blockquote>n" + n + "n</blockquote>")
})
}
function C(e, t, n) {
e = e.replace(/^n+/g, ""), e = e.replace(/n+$/g, "");
for (var r = e.split(/n{2,}/g), i = [], o = /§K(d+)K/, a = r.length, s = 0; a > s; s++) {
var l = r[s];
o.test(l) ? i.push(l) : /S/.test(l) && (l = c(l), l = l.replace(/^([ t]*)/g, n ? "" : "<p>"), n || (l += "</p>"), i.push(l))
}
if (!t) {
a = i.length;
for (var s = 0; a > s; s++)
for (var u = !0; u;) u = !1, i[s] = i[s].replace(/§K(d+)K/g, function(e, t) {
return u = !0, q[t]
})
}
return i.join("nn")
}
function _(e) {
return e = e.replace(/&(?!#?[xX]?(?:[0-9a-fA-F]+|w+);)/g, "&amp;"), e = e.replace(/<(?![a-z/?!]|§D)/gi, "&lt;")
}
function T(e) {
return e = e.replace(/\(\)/g, D), e = e.replace(/\([`*_{}[]()>#+-.!])/g, D)
}
function j(e, t, n, r) {
if (t) return e;
if (")" !== r.charAt(r.length - 1)) return "<" + n + r + ">";
for (var i = r.match(/[()]/g), o = 0, a = 0; a < i.length; a++) "(" === i[a] ? 0 >= o ? o = 1 : o++ : o--;
var s = "";
if (0 > o) {
var l = new RegExp("\){1," + -o + "}$");
r = r.replace(l, function(e) {
return s = e, ""
})
}
if (s) {
var c = r.charAt(r.length - 1);
Z.test(c) || (s = c + s, r = r.substr(0, r.length - 1))
}
return "<" + n + r + ">" + s
}
function A(e) {
e = F(e), e = e.replace(Q, j), e = V(e);
var n = function(e, t) {
var n = M(t);
return '<a href="' + n + '">' + N.plainLinkText(t) + "</a>"
};
return e = e.replace(/<((https?|ftp):[^'">s]+)>/gi, n), t.linkEmails && (e = e.replace(/(<|=")?(?:mailto:)?([-.w]+@[-a-z0-9]+(.[-a-z0-9]+)*.[a-z]+)/gi, I), e = e.replace(/<(?:mailto:)?([-.w]+@[-a-z0-9]+(.[-a-z0-9]+)*.[a-z]+)>/gi, function(e, t) {
var n = P(t);
return '<a href="mailto:' + n + '">' + n + "</a>"
})), e
}
function I(e) {
return e ? e.length > 0 && "<" === e[0] ? e : e.length > 1 && "=" === e[0] && '"' === e[1] ? e : "<" + e + ">" : ""
}
function P(e) {
return e = e.replace(/§E(d+)E/g, function(e, t) {
var n = parseInt(t);
return String.fromCharCode(n)
})
}
function R(e) {
return e = e.replace(/^(t|[ ]{1,4})/gm, "§0"), e = e.replace(/§0/g, "")
}
function O(e) {
if (!/t/.test(e)) return e;
var t, n = ["    ", "   ", "  ", " "],
r = 0;
return e.replace(/[nt]/g, function(e, i) {
return "n" === e ? (r = i + 1, e) : (t = (i - r) % 4, r = i + 1, n[t])
})
}
function M(e) {
return e = h(e), e = L(e, "*_:()[]")
}
function L(e, t, n) {
var r = "([" + t.replace(/([[]\])/g, "\$1") + "])";
n && (r = "\\" + r);
var i = new RegExp(r, "g");
return e = e.replace(i, D)
}
function D(e, t) {
var n = t.charCodeAt(0);
return "§E" + n + "E"
}
var N = this.hooks = new n;
N.addNoop("plainLinkText"), N.addNoop("preConversion"), N.addNoop("postNormalization"), N.addNoop("preBlockGamut"), N.addNoop("postBlockGamut"), N.addNoop("preSpanGamut"), N.addNoop("postSpanGamut"), N.addNoop("postConversion");
var U, B, q, z;
t = t || {};
var F = e,
V = e;
t.nonAsciiLetters && ! function() {
var e = /[Qu00aau00b5u00bau00c0-u00d6u00d8-u00f6u00f8-u02c1u02c6-u02d1u02e0-u02e4u02ecu02eeu0370-u0374u0376-u0377u037a-u037du0386u0388-u038au038cu038e-u03a1u03a3-u03f5u03f7-u0481u048a-u0523u0531-u0556u0559u0561-u0587u05d0-u05eau05f0-u05f2u0621-u064au0660-u0669u066e-u066fu0671-u06d3u06d5u06e5-u06e6u06ee-u06fcu06ffu0710u0712-u072fu074d-u07a5u07b1u07c0-u07eau07f4-u07f5u07fau0904-u0939u093du0950u0958-u0961u0966-u096fu0971-u0972u097b-u097fu0985-u098cu098f-u0990u0993-u09a8u09aa-u09b0u09b2u09b6-u09b9u09bdu09ceu09dc-u09ddu09df-u09e1u09e6-u09f1u0a05-u0a0au0a0f-u0a10u0a13-u0a28u0a2a-u0a30u0a32-u0a33u0a35-u0a36u0a38-u0a39u0a59-u0a5cu0a5eu0a66-u0a6fu0a72-u0a74u0a85-u0a8du0a8f-u0a91u0a93-u0aa8u0aaa-u0ab0u0ab2-u0ab3u0ab5-u0ab9u0abdu0ad0u0ae0-u0ae1u0ae6-u0aefu0b05-u0b0cu0b0f-u0b10u0b13-u0b28u0b2a-u0b30u0b32-u0b33u0b35-u0b39u0b3du0b5c-u0b5du0b5f-u0b61u0b66-u0b6fu0b71u0b83u0b85-u0b8au0b8e-u0b90u0b92-u0b95u0b99-u0b9au0b9cu0b9e-u0b9fu0ba3-u0ba4u0ba8-u0baau0bae-u0bb9u0bd0u0be6-u0befu0c05-u0c0cu0c0e-u0c10u0c12-u0c28u0c2a-u0c33u0c35-u0c39u0c3du0c58-u0c59u0c60-u0c61u0c66-u0c6fu0c85-u0c8cu0c8e-u0c90u0c92-u0ca8u0caa-u0cb3u0cb5-u0cb9u0cbdu0cdeu0ce0-u0ce1u0ce6-u0cefu0d05-u0d0cu0d0e-u0d10u0d12-u0d28u0d2a-u0d39u0d3du0d60-u0d61u0d66-u0d6fu0d7a-u0d7fu0d85-u0d96u0d9a-u0db1u0db3-u0dbbu0dbdu0dc0-u0dc6u0e01-u0e30u0e32-u0e33u0e40-u0e46u0e50-u0e59u0e81-u0e82u0e84u0e87-u0e88u0e8au0e8du0e94-u0e97u0e99-u0e9fu0ea1-u0ea3u0ea5u0ea7u0eaa-u0eabu0ead-u0eb0u0eb2-u0eb3u0ebdu0ec0-u0ec4u0ec6u0ed0-u0ed9u0edc-u0eddu0f00u0f20-u0f29u0f40-u0f47u0f49-u0f6cu0f88-u0f8bu1000-u102au103f-u1049u1050-u1055u105a-u105du1061u1065-u1066u106e-u1070u1075-u1081u108eu1090-u1099u10a0-u10c5u10d0-u10fau10fcu1100-u1159u115f-u11a2u11a8-u11f9u1200-u1248u124a-u124du1250-u1256u1258u125a-u125du1260-u1288u128a-u128du1290-u12b0u12b2-u12b5u12b8-u12beu12c0u12c2-u12c5u12c8-u12d6u12d8-u1310u1312-u1315u1318-u135au1380-u138fu13a0-u13f4u1401-u166cu166f-u1676u1681-u169au16a0-u16eau1700-u170cu170e-u1711u1720-u1731u1740-u1751u1760-u176cu176e-u1770u1780-u17b3u17d7u17dcu17e0-u17e9u1810-u1819u1820-u1877u1880-u18a8u18aau1900-u191cu1946-u196du1970-u1974u1980-u19a9u19c1-u19c7u19d0-u19d9u1a00-u1a16u1b05-u1b33u1b45-u1b4bu1b50-u1b59u1b83-u1ba0u1bae-u1bb9u1c00-u1c23u1c40-u1c49u1c4d-u1c7du1d00-u1dbfu1e00-u1f15u1f18-u1f1du1f20-u1f45u1f48-u1f4du1f50-u1f57u1f59u1f5bu1f5du1f5f-u1f7du1f80-u1fb4u1fb6-u1fbcu1fbeu1fc2-u1fc4u1fc6-u1fccu1fd0-u1fd3u1fd6-u1fdbu1fe0-u1fecu1ff2-u1ff4u1ff6-u1ffcu203f-u2040u2054u2071u207fu2090-u2094u2102u2107u210a-u2113u2115u2119-u211du2124u2126u2128u212a-u212du212f-u2139u213c-u213fu2145-u2149u214eu2183-u2184u2c00-u2c2eu2c30-u2c5eu2c60-u2c6fu2c71-u2c7du2c80-u2ce4u2d00-u2d25u2d30-u2d65u2d6fu2d80-u2d96u2da0-u2da6u2da8-u2daeu2db0-u2db6u2db8-u2dbeu2dc0-u2dc6u2dc8-u2dceu2dd0-u2dd6u2dd8-u2ddeu2e2fu3005-u3006u3031-u3035u303b-u303cu3041-u3096u309d-u309fu30a1-u30fau30fc-u30ffu3105-u312du3131-u318eu31a0-u31b7u31f0-u31ffu3400-u4db5u4e00-u9fc3ua000-ua48cua500-ua60cua610-ua62bua640-ua65fua662-ua66eua67f-ua697ua717-ua71fua722-ua788ua78b-ua78cua7fb-ua801ua803-ua805ua807-ua80aua80c-ua822ua840-ua873ua882-ua8b3ua8d0-ua8d9ua900-ua925ua930-ua946uaa00-uaa28uaa40-uaa42uaa44-uaa4buaa50-uaa59uac00-ud7a3uf900-ufa2dufa30-ufa6aufa70-ufad9ufb00-ufb06ufb13-ufb17ufb1dufb1f-ufb28ufb2a-ufb36ufb38-ufb3cufb3eufb40-ufb41ufb43-ufb44ufb46-ufbb1ufbd3-ufd3dufd50-ufd8fufd92-ufdc7ufdf0-ufdfbufe33-ufe34ufe4d-ufe4fufe70-ufe74ufe76-ufefcuff10-uff19uff21-uff3auff3fuff41-uff5auff66-uffbeuffc2-uffc7uffca-uffcfuffd2-uffd7uffda-uffdc]/g,
t = "Q".charCodeAt(0),
n = "A".charCodeAt(0),
r = "Z".charCodeAt(0),
i = "a".charCodeAt(0) - r - 1;
F = function(o) {
return o.replace(e, function(e) {
for (var o, a = e.charCodeAt(0), s = ""; a > 0;) o = a % 51 + n, o >= t && o++, o > r && (o += i), s = String.fromCharCode(o) + s, a = a / 51 | 0;
return "Q" + s + "Q"
})
}, V = function(e) {
return e.replace(/Q([A-PR-Za-z]{1,3})Q/g, function(e, o) {
for (var a, s = 0, l = 0; l < o.length; l++) a = o.charCodeAt(l), a > r && (a -= i), a > t && a--, a -= n, s = 51 * s + a;
return String.fromCharCode(s)
})
}
}();
var H = t.asteriskIntraWordEmphasis ? $ : S;
this.makeHtml = function(e) {
if (U) throw new Error("Recursive call to converter.makeHtml");
return U = new r, B = new r, q = [], z = 0, e = N.preConversion(e), e = e.replace(/§/g, "§T"), e = e.replace(/$/g, "§D"), e = e.replace(/rn/g, "n"), e = e.replace(/r/g, "n"), e = "nn" + e + "nn", e = O(e), e = e.replace(/^[ t]+$/gm, ""), e = N.postNormalization(e), e = w(e), e = o(e), e = i(e), e = l(e, !1, !1, !0), e = P(e), e = e.replace(/§D/g, "$$"), e = e.replace(/§T/g, "§"), e = N.postConversion(e), q = B = U = null, e
};
var W = function(e) {
return l(e)
},
K = {
"ol": "\d+[.]",
"ul": "[*+-]"
},
G = "[-A-Z0-9+&@#/%?=~_|[\]()!:,.;]",
Y = "[-A-Z0-9+&@#/%=~_|[\])]",
Q = new RegExp('(="|<)?\b(https?|ftp)(://' + G + "*" + Y + ")(?=$|\W)", "gi"),
Z = new RegExp(Y, "i")
}

这就是我卡住的地方。我一辈子都无法理解这最后一部分。它想要的隐藏 POST 字段">i1l"的实际值是多少?

你看错地方了。

e不是发送到loadTicks的参数。它是在success回调中传递的参数

"success": function(e) { // <-- This is the e you are looking for
t.append("<input type='hidden' name='i1l' value='" + e + "' />")
},

最新更新