`
snoopy7713
  • 浏览: 1167280 次
  • 性别: Icon_minigender_2
  • 来自: 火星郊区
博客专栏
Group-logo
OSGi
浏览量:0
社区版块
存档分类
最新评论

11 自己的JS调试工具 myLogger()对象

阅读更多
/**
 * @author elf
 */
function myLogger(id)
{
	id=id||'ADSLogWindow';
	var logWindow=null;
	var createWindow=function(){
		//取得新窗口在浏览器居中放置时左上角的位置
		var browserWindowSize=ADS.getBrowserWindowSize();
		var top=((browserWindowSize.height-200)/2)||0;
		var left=((browserWindowSize.width-200)/2)||0;
		//创建一个UL节点
		logWindow=document.createElement('UL');
		//指定ID ,以便在必要时在DOM树中能识别它
		logWindow.setAttribute('id',id);
		//在屏幕居中位置定位日志窗口
		logWindow.style.position = 'absolute';
		logWindow.style.top = top + 'px';
		logWindow.style.left = left + 'px';
		//设定固定的大小 ,并允许窗口内容滚动
		logWindow.style.width = '200px';
		logWindow.style.height = '200px';
		logWindow.style.overflow = 'scroll';
		logWindow.style.padding= '0';
		logWindow.style.margin= '0';
		logWindow.style.border= '1px solid black';
		logWindow.style.backgroundColor= 'white';
		logWindow.style.listStyle= 'none';
		logWindow.style.font= '10px/10px Verdana, Tahoma, Sans';
		
		//添加到文档主体中
		document.body.appendChild(logWindow);		
	};
	this.writeRaw=function(message){
		if(!logWindow) createWindow();
		//创建列表项并适当的添加样式
		var li = document.createElement('LI');
		li.style.padding= '2px';
		li.style.border= '0';
		li.style.borderBottom = '1px dotted black';
		li.style.margin= '0';
		li.style.color= '#000';
		li.style.font = '9px/9px Verdana, Tahoma, Sans';
		//为日志节点添加信息
		if(typeof message == 'undefined') {
			li.appendchild(document.createTextNode('Message was undefined'));
		} else if(typeof li.innerHTML != undefined) {
			li.innerHTML = message;
		} else {
			li.appendchild(document.createTextNode(message));
		}
		//添加'UL'窗口日志中
		logWindow.appendChild(li);
		
		return this;;
	}
}

/**
 * The myLogger prototype public methods
 */
myLogger.prototype = {

	/** 
	 * Writes a write a partially encoded version of the message to the log window.
	 * If the message is not a String, the toString method will be 
	 * called on the object. If no toString() method exists, the typof
	 * will be logged.
	 * @param {Object} message
	 */
	write: function (message) {
		// warn about null messages
		if(typeof message == 'string' && message.length==0) {
			return this.writeRaw('ADS.log: null message');
		}

		// if the message isn't a string try to call the toString() method,
		// if it doesn't exist simply log the type of object
		if (typeof message != 'string') {
			if(message.toString) return this.writeRaw(message.toString());
			else return this.writeRaw(typeof message);
		}

		// transform < and > so that .innerHTML doesn't parse the message as HTML
		message = message.replace(/</g,"&lt;").replace(/>/g,"&gt;");

		return this.writeRaw(message);
	},


	/**
	 * Writes a simple header to the log window.
	 */ 
	header: function (message) {
		message = '<span style="color:white;background-color:black;font-weight:bold;padding:0px 5px;">' + message + '</span>';
		return this.writeRaw(message);
	}

};

if(!window.ADS) { window['ADS'] = {}; }
window['ADS']['log'] = new myLogger();
if(!console) var console = ADS.log;
 
分享到:
评论

相关推荐

    log4js使用指南

    const logger = log4js.getLogger('myLogger'); ``` 然后,通过`logger`对象记录日志: ```javascript logger.info('This is an info message.'); ``` **5. Appenders** Appenders定义了日志输出的目的地,log4js...

    [JavaScript.DOM高级程序设计](加)桑贝斯.扫描版.part1.rar

     2.5 实例:你自己的调试日志   2.5.1 为什么需要JavaScript日志对象   2.5.2 myLogger()对象   2.6 小结   第3章 DOM2核心和DOM2 HTML   3.1 DOM不是JavaScript,它是文档   3.2 DOM的级别 ...

    [JavaScript.DOM高级程序设计](加)桑贝斯.扫描版.part3.rar

     2.5 实例:你自己的调试日志   2.5.1 为什么需要JavaScript日志对象   2.5.2 myLogger()对象   2.6 小结   第3章 DOM2核心和DOM2 HTML   3.1 DOM不是JavaScript,它是文档   3.2 DOM的级别 ...

    [JavaScript.DOM高级程序设计](加)桑贝斯.扫描版.part2.rar

     2.5 实例:你自己的调试日志   2.5.1 为什么需要JavaScript日志对象   2.5.2 myLogger()对象   2.6 小结   第3章 DOM2核心和DOM2 HTML   3.1 DOM不是JavaScript,它是文档   3.2 DOM的级别 ...

Global site tag (gtag.js) - Google Analytics