有些人在写Javascript时并不会去缩进代码,导致代码的可读性非常差,下面这个源码就是专为没有缩进过的JS代码所准备的,他可以将JS代码由杂乱无章变得井井有条,好了话不多说上源码。附上此源码地址:Javascript代码在线整理工具
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8;charset=utf-8" /> <title>JavaScript在线整理工具</title> </head> <body> <script type="text/javascript"> function JsDecoder() { this.s = ""; this.len = 0; this.i = 0; this.lvl = 0; this.code = [""]; this.row = 0; this.switches = []; this.lastWord = ""; this.nextChar = ""; this.prevChar = ""; this.isAssign = false; this.decode = function () { this.s = this.s.replace(/[\r\n\f]+/g, "\n"); this.len = this.s.length; while (this.i < this.len) { var a = this.s.charAt(this.i); this.charInit(); this.switch_c(a); this.i++ } return this.code.join("\n"); }; this.switch_c = function (a) { switch (a) { case "\n": this.linefeed(); break; case " ": case "\t": this.space(); break; case "{": this.blockBracketOn(); break; case "}": this.blockBracketOff(); break; case ":": this.colon(); break; case ";": this.semicolon(); break; case "(": this.bracketOn(); break; case ")": this.bracketOff(); break; case "[": this.squareBracketOn(); break; case "]": this.squareBracketOff(); break; case ‘"’: case "’": this.quotation(a); break; case "/": if ("/" == this.nextChar) { this.lineComment() } else { if ("*" == this.nextChar) { this.comment() } else { this.slash() } } break; case ",": this.comma(); break; case ".": this.dot(); break; case "~": case "^": this.symbol1(a); break; case "-": case "+": case "*": case "%": case "<": case "=": case ">": case "?": case ":": case "&": case "|": case "/": this.symbol2(a); break; case "!": if ("=" == this.nextChar) { this.symbol2(a) } else { this.symbol1(a) } break; default: if (/\w/.test(a)) { this.alphanumeric(a) } else { this.unknown(a) } break } a = this.s.charAt(this.i); if (!/\w/.test(a)) { this.lastWord = ""; } }; this.blockBracketOn = function () { this.isAssign = false; var f = this.nextNonWhite(this.i); if ("}" == f) { var c = (this.prevChar == ")" ? " " : ""); this.write(c + "{"); this.lvl++; return } if (/^\s*switch\s/.test(this.getCurrentLine())) { this.switches.push(this.lvl) } var a = this.getCurrentLine(); var e = this.row; var d = /(,)\s*(\w+\s*:\s*function\s*\([^\)]*\)\s*)$/; if (d.test(a)) { this.replaceLine(this.code[e].replace(d, "$1")); this.writeLine(); var b = d.exec(a); this.write(b[2]) } if (/^\s*return\s*/.test(this.code[this.row])) { if (/^\s*return\s+\w+/.test(this.code[this.row])) { this.writeLine() } else { if (this.prevChar != " ") { this.write(" ") } } this.write("{"); this.writeLine(); this.lvl++; return } if (/function\s*/.test(this.code[this.row]) || this.isBlockBig()) { this.writeLine() } else { if (this.prevChar != " " && this.prevChar != "\n" && this.prevChar != "(") { this.write(" ") } } this.write("{"); this.lvl++; if ("{" != f) { this.writeLine() } }; this.isBlockBig = function () { var b = this.i + 1; var d = 0; var e = 0; var a = 0; while (b < this.len – 1) { b++; var f = this.s.charAt(b); if (/\s/.test(f)) { continue } if ("}" == f && e == a) { break } if ("{" == f) { e++ } if ("}" == f) { a++ } d++; if (d > 80) { return true; } } return (d > 80); }; this.blockBracketOff = function () { var l = this.nextNonWhite(this.i); var k = this.prevNonWhite(this.i); var n = this.getCurrentLine(); if (k != "{") { if (n.length && l != ";" && l != "}" && l != ")" && l != ",") { this.writeLine() } else { if (n.length && k != ";" && l == "}" && this.isAssign) { this.semicolon() } else { if (n.length && this.isAssign && k != ";") { this.semicolon() } else { if (n.length && k != ";") { if (/^\s*(else)?\s*return[\s(]+/i.test(n)) { this.semicolon() } else { this.writeLine() } } } } } } this.write("}"); if ("," == l) { this.write(","); this.goNextNonWhite() } var j = this.nextManyNW(3); if (j == "(),") { this.write("(),"); this.goNextManyNW("(),"); this.writeLine() } else { if (j == "();") { this.write("();"); this.goNextManyNW("();"); this.writeLine() } else { if (j == "():") { this.write("()"); this.goNextManyNW("()"); this.write(" : "); this.goNextNonWhite() } else { if ("{" == k) { if ("," == l && this.getCurrentLine().length < 80) { this.write(" ") } else { if (this.nextWord() || "}" == l) { this.writeLine() } } } else { if (")" != l && "]" != l) { if ("," == l &&/^[\s\w,]+\)/.test(this.s.substr(this.i, 20))) { this.write(" ") } else { this.writeLine() } } } } } } this.lvl–; if (this.switches.length && this.switches[this.switches.length - 1] == this.lvl) { var m = this.row – 1; var e = str_repeat(" ", this.lvl * 4); var c = str_repeat(" ", (this.lvl + 1) * 4); var g = new RegExp("^" + e + "(switch\\s|{)"); var d = new RegExp("^" + c + "(case|default)[\\s:]"); var b = new RegExp("^" + c + "[^\\s]"); while (m > 0) { m–; if (g.test(this.code[m])) { break } if (d.test(this.code[m])) { continue } this.replaceLine(" " + this.code[m], m) } this.switches.pop() } if (this.sub) { return } var h = /^(\s*else\s*if)\s*\(/; var f = /^(\s*else)\s+[^{]+/; var a = this.s.substr(this.i + 1, 100); if (h.test(a)) { this.i += h.exec(a)[1].length; this.write("else if"); this.lastWord = "if"; this.fixSub("else if") } else { if (f.test(a)) { this.i += f.exec(a)[1].length; this.write("else"); this.lastWord = "else"; this.fixSub("else") } } }; this.bracketOn = function () { if (this.isKeyword() && this.prevChar != " " && this.prevChar != "\n") { this.write(" (") } else { this.write("(") } }; this.bracketOff = function () { this.write(")"); if (this.sub) { return } var j = new RegExp("^\\s*(if|for|while|do)\\s*\\([^{}]+\\)$", "i"); var l = this.getCurrentLine(); if (j.test(l)) { var h = this.nextNonWhite(this.i); if ("{" != h && ";" != h && ")" != h) { var b = 0; var f = 0; var g = false; var d = false; var e = false; for (var a = 0; a < l.length; a++) { if (l.charAt(a) == "(") { g = true; b++ } if (l.charAt(a) == ")") { f++; if (g && b == f) { if (a == l.length – 1) { e = true } else { break } } } } if (e) { this.fixSub(j.exec(l)[1]) } } } }; this.sub = false; this.orig_i = null; this.orig_lvl = null; this.orig_code = null; this.orig_row = null; this.orig_switches = null; this.restoreOrig = function (a) { this.sub = false; if (!a) { this.i = this.orig_i } this.lvl = this.orig_lvl; this.code = this.orig_code; this.row = this.orig_row; this.switches = this.orig_switches; this.prevCharInit(); this.lastWord = ""; this.charInit(); this.isAssign = false; }; this.combineSub = function () { for (i = 0; i < this.code.length; i++) { var a = this.orig_code[this.orig_row]; if (0 == i && a.length) { if (a.substr(a.length – 1, 1) != " ") { this.orig_code[this.orig_row] += " " } this.orig_code[this.orig_row] += this.code[i].trim() } else { this.orig_code[this.orig_row + i] = this.code[i]; } } }; this.fixSub = function (d) { if (this.sub) { return } if ("{" == this.nextNonWhite(this.i)) { return } var l = this.nextWord(); this.orig_i = this.i; this.orig_lvl = this.lvl; this.orig_code = this.code; this.orig_row = this.row; this.orig_switches = this.switches; this.sub = true; this.code = [""]; this.prevChar = ""; this.row = 0; this.switches = []; this.isAssign = false; this.i++; var k = 0; var h = 0; var g = 0; if ("else if" == d) { var e = false } var m = false; var b = false; var j = false; while (!m && this.i < this.len) { var f = this.s.charAt(this.i); this.charInit(); switch (f) { case "{": k++; break; case "}": k–; if (0 == k && 0 == h && 0 == g && this.lvl – 1 == this.orig_lvl) { var a = this.nextWord(); if ("switch" == l) { m = true; break } if ("try" == l && "catch" == b) { m = true; break } if ("while" == l && "do" == b) { m = true; break } if ("if" == l) {} if ("if" == d && "else" == a && "if" != l) { m = true; break } b = a } break; case "(": h++; break; case ")": h–; if ("else if" == d && 0 == h && !e) { if (this.nextNonWhite(this.i) == "{") { this.write(f); this.combineSub(); this.restoreOrig(true); return } this.write(f); this.combineSub(); this.restoreOrig(true); this.fixSub("if"); return } break; case "[": g++; break; case "]": g–; break; case ";": if (0 == k && 0 == h && 0 == g && this.lvl == this.orig_lvl && "if" != l) { m = true } break } if (-1 == k && h == 0 && g == 0 && this.prevNonWhite(this.i) != "}") { this.write(";"); this.i–; m = true } else { if (k < 0 || h < 0 || g < 0) { m = false; break } else { this.switch_c(f) } } this.i++ } this.i–; if (m) { this.s = this.s.substr(0, this.orig_i + 1) + "{" + this.code.join("\n") + "}" + this.s.substr(this.i + 1); this.len = this.s.length } this.restoreOrig(false); }; this.squareBracketOn = function () { this.checkKeyword(); this.write("[") }; this.squareBracketOff = function () { this.write("]") }; this.isKeyword = function () { return this.lastWord.length && this.keywords.indexOf(this.lastWord) !=- 1; }; this.linefeed = function () {}; this.space = function () { if (!this.prevChar.length) { return } if (" " == this.prevChar || "\n" == this.prevChar) { return } if ("}" == this.prevChar && "]" == this.nextChar) {} this.write(" "); return }; this.checkKeyword = function () { if (this.isKeyword() && this.prevChar != " " && this.prevChar != "\n") { this.write(" ") } }; this.nextWord = function () { var a = this.i; var b = ""; while (a < this.len – 1) { a++; var d = this.s.charAt(a); if (b.length) { if (/\s/.test(d)) { break } else { if (/\w/.test(d)) { b += d } else { break } } } else { if (/\s/.test(d)) { continue } else { if (/\w/.test(d)) { b += d } else { break } } } } if (b.length) { return b } return false; }; this.nextManyNW = function (e) { var a = ""; var b = this.i; while (b < this.len – 1) { b++; var d = this.s.charAt(b); if (!/^\s+$/.test(d)) { a += d; if (a.length == e) { return a; } } } return false; }; this.goNextManyNW = function (e) { var a = ""; var b = this.i; while (b < this.len – 1) { b++; var d = this.s.charAt(b); if (!/^\s+$/.test(d)) { a += d; if (a == e) { this.i = b; this.charInit(); return true } if (a.length >= e.length) { return false; } } } return false; }; this.nextNonWhite = function (a) { while (a < this.len – 1) { a++; var b = this.s.charAt(a); if (!/^\s+$/.test(b)) { return b; } } return false; }; this.prevNonWhite = function (a) { while (a > 0) { a–; var b = this.s.charAt(a); if (!/^\s+$/.test(b)) { return b; } } return false; }; this.goNextNonWhite = function () { var a = this.i; while (a < this.len – 1) { a++; var b = this.s.charAt(a); if (!/^\s+$/.test(b)) { this.i = a; this.charInit(); return true; } } return false; }; this.colon = function () { var a = this.getCurrentLine(); if (/^\s*case\s/.test(a) ||/^\s*default$/.test(a)) { this.write(":"); this.writeLine() } else { this.symbol2(":") } }; this.isStart = function () { return this.getCurrentLine().length === 0; }; this.backLine = function () { if (!this.isStart) { throw "backLine() may be called only at the start of the line" } this.code.length = this.code.length – 1; this.row– }; this.semicolon = function () { this.isAssign = false; if (this.isStart()) { this.backLine() } this.write(";"); if (/^\s*for\s/.test(this.getCurrentLine())) { this.write(" ") } else { this.writeLine() } }; this.quotation = function (a) { this.checkKeyword(); var b = false; this.write(a); while (this.i < this.len – 1) { this.i++; var d = this.s.charAt(this.i); if ("\\" == d) { b = (b ? false : true) } this.write(d); if (d == a) { if (!b) { break } } if ("\\" != d) { b = false; } } }; this.lineComment = function () { this.write("//"); this.i++; while (this.i < this.len – 1) { this.i++; var a = this.s.charAt(this.i); if ("\n" == a) { this.writeLine(); break } this.write(a) } }; this.comment = function () { this.write("/*"); this.i++; var b = ""; var a = ""; while (this.i < this.len – 1) { this.i++; a = b; b = this.s.charAt(this.i); if (" " == b || "\t" == b || "\n" == b) { if (" " == b) { if (this.getCurrentLine().length > 100) { this.writeLine() } else { this.write(" ", true) } } else { if ("\t" == b) { this.write(" ", true) } else { if ("\n" == b) { this.writeLine() } } } } else { this.write(b, true) } if ("/" == b && "*" == a) { break } } this.writeLine() }; this.slash = function () { var f = this.i – 1; var j = this.s.charAt(f); for (f = this.i – 1; f >= 0; f–) { var e = this.s.charAt(f); if (" " == e || "\t" == e) { continue } j = this.s.charAt(f); break } var l = /^\w+$/.test(j) || "]" == j || ")" == j; var k = ("*" == this.prevChar); if (l || k) { if (l) { if ("=" == this.nextChar) { var m = this.prevChar == " " ? "" : " "; this.write(m + "/") } else { this.write(" / ") } } else { if (k) { this.write("/ ") } } } else { if (")" == this.prevChar) { this.write(" / ") } else { var g = ""; if ("=" == this.prevChar || ":" == this.prevChar) { g += " /" } else { g += "/" } var d = false; while (this.i < this.len – 1) { this.i++; var h = this.s.charAt(this.i); if ("\\" == h) { d = (d ? false : true) } g += h; if ("/" == h) { if (!d) { break } } if ("\\" != h) { d = false; } } this.write(g) } } }; this.comma = function () { this.write(", "); var a = this.getCurrentLine(); if (a.replace(" ", "").length > 100) { this.writeLine() } }; this.dot = function () { this.write(".") }; this.symbol1 = function (a) { if ("=" == this.prevChar && "!" == a) { this.write(" " + a) } else { this.write(a) } }; this.symbol2 = function (d) { if ("+" == d || "-" == d) { if (d == this.nextChar || d == this.prevChar) { this.write(d); return } } var a = (this.prevChar == " " ? "" : " "); var b = " "; if ("(" == this.prevChar) { a = ""; b = "" } if ("-" == d && (">" == this.prevChar || ">" == this.prevChar)) { this.write(" " + d); return } if (this.symbols2.indexOf(this.prevChar) !=- 1) { if (this.symbols2.indexOf(this.nextChar) !=- 1) { this.write(d + (this.nextChar == "!" ? " " : "")) } else { this.write(d + b) } } else { if (this.symbols2.indexOf(this.nextChar) !=- 1) { this.write(a + d) } else { this.write(a + d + b) } } if ("=" == d &&/^[\w\]]$/.test(this.prevNonWhite(this.i)) &&/^[\w\'\"\[]$/.test(this.nextNonWhite(this.i))) { this.isAssign = true; } }; this.alphanumeric = function (a) { if (this.lastWord) { this.lastWord += a } else { this.lastWord = a } if (")" == this.prevChar) { a = " " + a } this.write(a); }; this.unknown = function (a) { this.write(a) }; this.charInit = function () { if (this.len – 1 === this.i) { this.nextChar = "" } else { this.nextChar = this.s.charAt(this.i + 1); } }; this.write = function (d, b) { if (b) { if (!/\s/.test(d)) { if (this.code[this.row].length < this.lvl * 4) { this.code[this.row] += str_repeat(" ", this.lvl * 4 – this.code[this.row].length) } } this.code[this.row] += d } else { if (0 === this.code[this.row].length) { var a = ("}" == d ? this.lvl – 1 : this.lvl); for (var c = 0; c < a; c++) { this.code[this.row] += " " } this.code[this.row] += d } else { this.code[this.row] += d } } this.prevCharInit() }; this.writeLine = function () { this.code.push(""); this.row++; this.prevChar = "\n"; }; this.replaceLine = function (a, b) { if ("undefined" == typeof b) { b = false } if (b !== false) { if (!/^\d+$/.test(b) || b < 0 || b > this.row) { throw "replaceLine() failed: invalid row=" + b } } if (b !== false) { this.code[b] = a } else { this.code[this.row] = a } if (b === false || b == this.row) { this.prevCharInit() } }; this.prevCharInit = function () { this.prevChar = this.code[this.row].charAt(this.code[this.row].length – 1); }; this.writeTab = function () { this.write(" "); this.prevChar = " "; }; this.getCurrentLine = function () { return this.code[this.row]; }; this.symbols1 = "~!^"; this.symbols2 = "-+*%<=>?:&|/!"; this.keywords = ["abstract", "boolean", "break", "byte", "case", "catch", "char", "class", "const", "continue", "default", "delete", "do", "double", "else", "extends", "false", "final", "finally", "float", "for", "function", "goto", "if", "implements", "import", "in", "instanceof", "int", "interface", "long", "native", "new", "null", "package", "private", "protected", "public", "return", "short", "static", "super", "switch", "synchronized", "this", "throw", "throws", "transient", "true", "try", "typeof", "var", "void", "while", "with"] } if (typeof Array.prototype.indexOf == "undefined") { Array.prototype.indexOf = function (b) { for (var a = 0; a < this.length; a++) { if ((typeof this [a] == typeof b) && (this [a] == b)) { return a; } } return – 1; } } if (!String.prototype.trim) { String.prototype.trim = function () { return this.replace(/^\s*|\s*$/g, ""); } } function str_repeat(c, b) { ret = ""; for (var a = 0; a < b; a++) { ret += c } return ret } var debug_w; function debug(d, a) { if (!debug_w) { var b = 600; var k = 600; var j = (screen.width / 2 – b / 2); var h = (screen.height / 2 – k / 2); debug_w = window.open("", "", "scrollbars=yes,resizable=yes,width=" + b + ",height=" + k + ",screenX=" + (j) + ",screenY=" + h + ",left=" + j + ",top=" + h); debug_w.document.open(); debug_w.document.write("<html><head><style>body{margin: 1em;padding: 0;font-family: courier new; font-size: 12px;}h1,h2{margin: 0.2em 0;}</style></head><body><h1>Debug</h1></body></html>"); debug_w.document.close() } var g = ""; if ("undefined" !== typeof a && a.length) { g = "<h2>" + a + "</h2>\n" } if ("object" === typeof d) { for (var c = 0; c < d.length; c++) { g += "[" + c + "] => " + d[c] + "\n" } } else { if ("string" == typeof d) { g += d } else { try { g += d.toString() } catch (f) {} g += " (" + typeof d + ")" } } debug_w.document.body.innerHTML += "<pre>" + g + "</pre>" }; </script> <script type="text/javascript"> function JsColorizer() { this.color = { keyword : "#0000FF", object : "#FF0000", quotation : "#FF00FF", comment : "#008000" }; this.s = ""; this.i = 0; this.len = 0; this.ret = ""; this.lastWord = ""; this.nextChar = ""; this.prevChar = ""; this.code = [""]; this.row = 0; this.times = { quotation : 0, quotation_calls : 0, lineComment : 0, lineComment_calls : 0, comment : 0, comment_calls : 0, slash : 0, slash_calls : 0, word : 0, word_calls : 0 }; this.write = function (a) { this.code[this.row] += a; if (a.length == 1) { this.prevChar = a } else { this.prevCharInit() } }; this.writeLine = function () { this.code.push(""); this.row++; this.prevChar = "\n"; }; this.prevCharInit = function () { this.prevChar = this.code[this.row].charAt(this.code[this.row].length – 1); }; this.showTimes = function () { var a = ""; for (var c in this.times) { var b = this.times[c]; if (/_calls/.test(c)) { a += c + ": " + b + "\n" } else { a += c + ": " + time_round(b) + " sec\n" } } return a; }; this.colorize = function () { this.len = this.s.length; while (this.i < this.len) { var a = this.s.charAt(this.i); if (this.len – 1 == this.i) { this.nextChar = "" } else { this.nextChar = this.s.charAt(this.i + 1) } switch (a) { case "\n": if (this.lastWord.length) { this.word() } this.lastWord = ""; this.writeLine(); break; case "’": case ‘"’: if (this.lastWord.length) { this.word() } this.lastWord = ""; this.quotation(a); break; case "/": if (this.lastWord.length) { this.word() } this.lastWord = ""; if ("/" == this.nextChar) { this.lineComment() } else { if ("*" == this.nextChar) { this.comment() } else { this.slash() } } break; default: if (/^\w$/.test(a)) { this.lastWord += a } else { if (this.lastWord.length) { this.word() } this.lastWord = ""; this.write(a) } break } this.i++ } this.write(this.lastWord); return this.code.join("\n"); }; this.quotation = function (a) { var b = a; var d = false; while (this.i < this.len – 1) { this.i++; var e = this.s.charAt(this.i); if ("\\" == e) { d = (d ? false : true) } b += e; if (e == a) { if (!d) { break } } if ("\\" != e) { d = false; } } this.write(‘<font color="’ + this.color.quotation + ‘">’ + b + "</font>") }; this.lineComment = function () { var a = "//"; this.i++; while (this.i < this.len – 1) { this.i++; var b = this.s.charAt(this.i); a += b; if ("\n" == b) { break } } this.write(‘<font color="’ + this.color.comment + ‘">’ + a + "</font>") }; this.comment = function () { var a = "/*"; this.i++; var d = ""; var b = ""; while (this.i < this.len – 1) { this.i++; b = d; d = this.s.charAt(this.i); a += d; if ("/" == d && "*" == b) { break } } this.write(‘<font color="’ + this.color.comment + ‘">’ + a + "</font>") }; this.slash = function () { var h = this.i – 1; var k = this.s.charAt(h); for (h = this.i – 1; h >= 0; h–) { var g = this.s.charAt(h); if (" " == g || "\t" == g) { continue } k = this.s.charAt(h); break } var e = /^\w+$/.test(k) || "]" == k || ")" == k; var d = ("*" == this.prevChar); if (e || d) { if (e) { if ("=" == this.nextChar) { this.write("/") } else { this.write("/") } } else { if (d) { this.write("/") } } } else { if (")" == this.prevChar) { this.write("/") } else { var f = ""; if ("=" == this.prevChar) { f += "/" } else { f += "/" } var i = false; while (this.i < this.len – 1) { this.i++; var j = this.s.charAt(this.i); if ("\\" == j) { i = (i ? false : true) } f += j; if ("/" == j) { if (!i) { break } } if ("\\" != j) { i = false; } } this.write(‘<font color="’ + this.color.quotation + ‘">’ + f + "</font>") } } }; this.word = function () { if (this.keywords.indexOf(this.lastWord) !=- 1) { this.write(‘<font color="’ + this.color.keyword + ‘">’ + this.lastWord + "</font>") } else { if (this.objects.indexOf(this.lastWord) !=- 1) { this.write(‘<font color="’ + this.color.object + ‘">’ + this.lastWord + "</font>") } else { this.write(this.lastWord) } } }; this.keywords = ["abstract", "boolean", "break", "byte", "case", "catch", "char", "class", "const", "continue", "default", "delete", "do", "double", "else", "extends", "false", "final", "finally", "float", "for", "function", "goto", "if", "implements", "import", "in", "instanceof", "int", "interface", "long", "native", "new", "null", "package", "private", "protected", "public", "return", "short", "static", "super", "switch", "synchronized", "this", "throw", "throws", "transient", "true", "try", "typeof", "var", "void", "while", "with"]; this.objects = ["Anchor", "anchors", "Applet", "applets", "Area", "Array", "Button", "Checkbox", "Date", "document", "FileUpload", "Form", "forms", "Frame", "frames", "Hidden", "history", "Image", "images", "Link", "links", "Area", "location", "Math", "MimeType", "mimeTypes", "navigator", "options", "Password", "Plugin", "plugins", "Radio", "Reset", "Select", "String", "Submit", "Text", "Textarea", "window"]; }; </script> <script type="text/javascript"> var base_code = ""; var jsdecoder; var jscolorizer; var code = ""; var time = 0; function decode() { code = ""; base_code = ""; jsdecoder = new JsDecoder(); jscolorizer = new JsColorizer(); if ($("msg").innerHTML.length) { do_clean_init() } else { jsdecoder.s = $("a1").value; do_decode_init() } } function do_decode_init() { $("msg").innerHTML += "整理 .. "; setTimeout(do_decode, 50) } function do_decode() { time = time_start(); try { code = jsdecoder.decode(); base_code = code } catch (a) { $("msg").innerHTML += "error<br><br>" + new String(a).replace(/\n/g, "<br>"); return } $("msg").innerHTML += "完成 (" + time_end(time) + " 秒)<br>"; setTimeout(do_colorize_init, 50) } function do_colorize_init() { $("msg").innerHTML += "上色 .. "; setTimeout(do_colorize, 50) } function do_colorize() { time = time_start(); code = code.replace(/&/g, "&"); code = code.replace(/</g, "<"); code = code.replace(/>/g, ">"); jscolorizer.s = code; try { code = jscolorizer.colorize() } catch (a) { $("msg").innerHTML += "error<br><br>" + new String(a).replace(/\n/g, "<br>"); return } $("msg").innerHTML += "完成 (" + time_end(time) + " 秒)<br>"; setTimeout(do_insert_init, 50) } function do_insert_init() { $("msg").innerHTML += "显示代码 .. "; setTimeout(do_insert, 50) } function do_insert() { time = time_start(); try { code = new String(code); code = code.replace(/(\r\n|\r|\n)/g, "<br>\n"); code = code.replace(/<font\s+/gi, "<font@@@@@"); code = code.replace(/( |\t)/g, " "); code = code.replace(/<font@@@@@/gi, "<font "); code = code.replace(/\n$/, ""); var c = 0; var h = code.indexOf("\n"); while (h !=- 1) { c++; h = code.indexOf("\n", h + 1) } c++; pad = new String(c).length; var a = ""; for (var b = 0; b < c; b++) { var f = pad – new String(b + 1).length; var g = new String(b + 1); for (k = 0; k < f; k++) { g = " " + g } g += " "; a += ‘<div style="background: #fff; color: #666;">’ + g + "</div>" } $("lines").innerHTML = a; $("code_area").style.display = "block"; $("sel_all").style.display = "block"; $("a2").innerHTML = code } catch (d) { $("msg").innerHTML += "error<br><br>" + new String(d).replace(/\n/g, "<br>"); return } $("msg").innerHTML += "完成 (" + time_end(time) + " 秒)"; code = "" } function do_clean_init() { $("msg").innerHTML = ""; do_clean() } function do_clean() { time = time_start(); $("code_area").style.display = "none"; base_code = ""; $("sel_all").style.display = "none"; $("insert_div").style.display = "none"; jsdecoder.s = $("a1").value; do_decode_init() } function insert_textarea() { $("insert_div").style.display = "block"; $("insert_area").value = base_code; $("insert_area").focus(); $("insert_area").select() } function $(a) { return document.getElementById(a) } function time_micro() { var a = new String(new Date().getTime()); a = a.substr(0, a.length – 3) + "." + a.substr(a.length – 3, 3); return parseFloat(a) } function time_start() { return time_micro() } function time_get(a) { return time_micro() – a } function time_end(a) { return time_round(time_micro() – a) } function time_round(a) { a = Math.round(a * 100) / 100; if (a === 0) { a = 0.01 } return a; }; </script> <div align="center"><textarea id="a1" style="height:200px;width:95%;">请把你需要格式化的内容粘贴在这里!</textarea></div> <p /> <div align="center"> <input type="button" onClick="decode()" value="格式化" /> </div> <div id="msg" style="font-family: courier new; font-size: 12px; background: #ffffd7; margin: 1em 0;text-align:left"></div> <div id="sel_all" style="display: none; margin: 1em 0; text-align:left"><a href="javascript:void(0)" onClick="insert_textarea()"><u>在textarea中显示</u></a></div> <div id="insert_div" style="display: none; margin: 1em 0;text-align:center"><textarea id="insert_area" style="height:300px;width:95%;"></textarea></div> <div id="code_area" style="display: none;"> <table cellspacing="0" cellpadding="0" style="font-family: courier new; font-size: 12px;" width="100%"> <tr> <td valign="top" id="lines" width="10"></td> <td nowrap id="a2" style="background: #f5f5f5;text-align:left"></td> </tr> </table> </html>