在上篇的随笔中自己写了一个小小的js调试的工具,用于代替js的alert()方法,这次抽时间加强了程序的健壮性。这个小工具公开了两个方法:Debug.write(arg)和Debug.writeln(arg)两个方法。
简单介绍如下:
Debug.write(arg):输出arg中的内容。arg:可以是js中的原始类型(String、Number、Boolean、Undefiend、Null)。输出的内容不换行。
Debug.writeln(arg):输出arg中的内容。arg:可以是js中的原始类型(String、Number、Boolean、Undefiend、Null)。输出后带一个换行。
*为了方便,如果不传递arg,Debug.write()不输出内容。Debug.writeln()产生一个换行。
源代码如下:
Debug7.js
1 /*
2 Debug7.js
3 Date: 2012-03-27
4 Author: JueLance
5 Blog: http://www.cnblogs.com/liszt/
6 */
7
8 var Debug = (function () {
9 var _tb;
10 var Enable = true;
11 var Clear = false;
12 var ConsoleWindow = {
13 "600px",
14 heght: "300px"
15 };
16
17 var write = function (msg, newline) {
18 var _msg = "";
19
20 if (typeof msg === "string" || typeof msg === "number" || typeof msg === "boolean" || typeof msg === "function") {
21 _msg = msg.toString();
22 } else if (typeof msg === "object" && msg !== null) {
23 if (msg.constructor == Array) {
24 _msg = msg.toString();
25 } else {
26 for (var o in msg) {
27 _msg += o + ":" + msg[o] + "\r";
28 }
29 }
30 } else {
31 if (msg === null) {
32 _msg = "null";
33 } else {
34 _msg = "undefined";
35 }
36 }
37
38 if (Boolean(newline)) {
39 _msg += "\r";
40 }
41
42 if (Enable) {
43 if (!_tb) {
44 _tb = document.createElement("textarea");
45 _tb.style.width = ConsoleWindow.width;
46 _tb.style.height = ConsoleWindow.heght;
47 if (document.body) {
48 document.body.appendChild(_tb);
49 } else {
50 window.onload = function () {
51 document.body.appendChild(_tb);
52 }
53 }
54 }
55 if (Debug.Clear) {
56 _tb.innerHTML = "";
57 }
58 _tb.appendChild(document.createTextNode(_msg));
59 _tb.scrollTop = _tb.scrollHeight;
60 }
61 }
62
63 return {
64 write: function (msg) {
65 if (arguments.length > 0) {
66 write(msg, false);
67 } else {
68 write("", false);
69 }
70 },
71
72 writeln: function (msg) {
73 if (arguments.length > 0) {
74 write(msg, true);
75 } else {
76 write("", true);
77 }
78 }
79
80 };
81 })();