web前端开发也需要日志


Posted in Javascript onDecember 09, 2010

如IE6,在他上面还不那么富饶,给程序调试带来的很大的痛苦啊,所以日志即时输出是一个不错的选择,可以知道程序覆盖到了哪里。即是在先进的浏览器上也是很有必要的,他比去调试程序来确定相应的业务代码有没有执行到也快的多也容易的多,好了,下面来给大家介绍一个我业余时间写的调试信息输出工具。
上代码:

(function(){ 
var cache = []; 
var el = null; 
this.__debugLine = 1; 
function parseObjToStr(obj){ 
if(obj.constructor == String){ 
return obj.toString(); 
} 
var ret = []; 
for(var o in obj){ 
if(typeof obj[o]!="function") 
ret.push(o+":"+obj[o]); 
} 
return ret.join(","); 
} 
this.assert = function(flag,msg){ 
msg = {"number":1,"string":1,"boolean":1,"function":1,"undefined":1}[typeof msg]?msg:parseObjToStr(msg); 
//Log.getInstance().debug(msg); 
return; 
var bgColor = this.__debugLine%2==0?"background-color:#F8F8F8":"background-color:#ffffff"; 
msg = flag=="debug"?String.format('<div style="{0}"><table style="font-size:12px;border-collapse:collapse !important;"><tbody><tr><td style="height:25px;line-height:25px;border-right:3px solid #6CE26C;width:45px; text-align:center;"><code style="font-weight:bold;color:gray">{1}</code></td><td><b style="color:{2};margin-left:5px;">[{3}]:</b>{4}</td></tr></tbody></table></div>', 
bgColor,this.__debugLine,"#333333",flag,msg):msg; 
if(flag.constructor!=String) 
msg = String.format('<div style="{0}"><table style="font-size:12px;;border-collapse:collapse !important;line-height:25px;"><tbody><tr><td style="height:25px;line-height:25px;border-right:3px solid #6CE26C;width:45px;text-align:center;"><code style="font-weight:bold;color:gray">{1}</code></td><td><b style="color:{2};margin-left:5px;">[{3}]:</b>{4}</td></tr></tbody></table></div>', 
bgColor,this.__debugLine,flag?"green":"red",flag?"PASS ":"FAIL ",msg); 
this.__debugLine++; 
if(cache!=null){ 
cache[cache.length] = msg; 
} 
else{ 
el.innerHTML += msg; 
} 
} 
function applyStyle(el,style){ 
for(var pro in style){ 
el.style[pro] = style[pro]; 
} 
} 
addEvent(window,"load",function(){ 
return; 
el = document.createElement("div"); 
var elStyle ={backgroundColor:"#ffffff",color:"#333333",border:"1px solid #dcdada",borderLeft:"0px solid #6CE26C",borderRight:"0px solid #6CE26C" 
,lineHeight :"25px",textAlign:"left",listStyleType :"none",margin:"0px",maxHeight:"200px",overflow:"auto"}; 
var head = document.createElement("div"); 
var headStyle ={backgroundColor:"#fef5c5",lineHeight:"25px"}; 
head.innerHTML = "<span style='float:left;font-weight:bold;margin-left:10px;font-size:13px;'>调试信息控制台</span><span id='console_andler' style='float:right;margin-right:20px;cursor:pointer' title='展开/折叠'>+</span><br style='clear:both'>"; 
var wrap = document.createElement("div"); 
var wrapStyle ={overflow:"hidden",backgroundColor:"#ffffff",color:"#333333",border:"1px solid #C0C0C0","fontSize":"12px","margin":"5px",position:"fixed",left:"0px",bottom:"0px",width:"97%"}; 
var foot = document.createElement("div"); 
var footStyle ={padding:"0",textAlign:"left"}; 
foot.innerHTML = ">>><input type = 'text' value='' id='console_eval' style='margin:0;width:90%;border:none;line-height:25px;height:25px;text-indent:10px;'/>"; 
applyStyle(wrap,wrapStyle); 
applyStyle(head,headStyle); 
applyStyle(el,elStyle); 
applyStyle(foot,footStyle); 
wrap.appendChild(head); 
wrap.appendChild(el); 
wrap.appendChild(foot); 
document.body.appendChild(wrap); 
el.innerHTML = cache.join(""); 
cache = null; 
function toggle(){ 
if(!this.hide){ 
el.style.display = "none"; 
foot.style.display = "none"; 
wrap.style.width = "200px"; 
this.hide = true; 
} 
else{ 
el.style.display = ""; 
foot.style.display = ""; 
wrap.style.width = "98%"; 
this.hide = false; 
} 
} 
head.onclick = function(){ 
toggle.call(this); 
} 
head.onclick(); 
document.getElementById("console_eval").onkeydown = function(e){ 
e = e||window.event; 
if(e.keyCode==13){ 
try{ 
eval.call(window,String.format("assert('debug',{0})",this.value)); 
} 
catch(e){ 
assert("debug",e.message); 
} 
el.scrollTop = el.scrollHeight; 
} 
} 
}); 
})();

上面代码调用也相当的简单
assert("debug","调试信息");

页面中就会出相应的日志。
该日志输出部分代码取自Jquery作者一个单元测试模块。
Javascript 相关文章推荐
十个优秀的Ajax/Javascript实例网站收集
Mar 31 Javascript
httpclient模拟登陆具体实现(使用js设置cookie)
Dec 11 Javascript
js获取html页面节点方法(递归方式)
Dec 13 Javascript
D3.js 从P元素的创建开始(显示可加载数据)
Oct 30 Javascript
JavaScript实现打字效果的方法
Jul 10 Javascript
jquery动态赋值id与动态取id方法示例
Aug 21 jQuery
React教程之Props验证的具体用法(Props Validation)
Sep 04 Javascript
vue+mock.js实现前后端分离
Jul 24 Javascript
JS中自定义事件的使用与触发操作实例分析
Nov 01 Javascript
js中forEach,for in,for of循环的用法示例小结
Mar 14 Javascript
vue 使用localstorage实现面包屑的操作
Nov 16 Javascript
js实现弹幕墙效果
Dec 10 Javascript
JS拖动技术 关于setCapture使用
Dec 09 #Javascript
一起来写段JS drag拖动代码
Dec 09 #Javascript
教您去掉ie网页加载进度条的方法
Dec 09 #Javascript
javascript 折半查找字符在数组中的位置(有序列表)
Dec 09 #Javascript
基于jQuery的一个扩展form序列化到json对象
Dec 09 #Javascript
来自国外的页面JavaScript文件优化
Dec 08 #Javascript
js 替换功能函数,用正则表达式解决,js的全部替换
Dec 08 #Javascript
You might like
thinkphp中连接oracle时封装方法无法用的解决办法
2013/06/17 PHP
PHP生成RSS文件类实例
2014/12/05 PHP
win平台安装配置Nginx+php+mysql 环境
2016/01/12 PHP
Yii框架的布局文件实例分析
2019/09/04 PHP
在jQuery中 关于json空对象筛选替换
2013/04/15 Javascript
jquery submit ie6下失效的原因分析及解决方法
2013/11/15 Javascript
JS遍历Json字符串中键值对先转成JSON对象再遍历
2014/08/15 Javascript
jQuery操作表单常用控件方法小结
2015/03/23 Javascript
javascript鼠标滑动评分控件完整实例
2015/05/13 Javascript
js+html5实现canvas绘制圆形图案的方法
2015/06/05 Javascript
Javascript简单改变表单元素背景的方法
2015/07/15 Javascript
解决js相同的正则多次调用test()返回的值却不同的问题
2018/10/10 Javascript
JavaScript面试技巧之数组的一些不low操作
2019/03/22 Javascript
JS Thunk 函数的含义和用法实例总结
2020/04/08 Javascript
Javascript基于OOP实实现探测器功能代码实例
2020/08/26 Javascript
从表单校验看JavaScript策略模式的使用详解
2020/10/17 Javascript
Python实现可获取网易页面所有文本信息的网易网络爬虫功能示例
2018/01/15 Python
python3+PyQt5重新实现QT事件处理程序
2018/04/19 Python
关于Tensorflow中的tf.train.batch函数的使用
2018/04/24 Python
Python3之简单搭建自带服务器的实例讲解
2018/06/04 Python
Python socket实现的简单通信功能示例
2018/08/21 Python
使用python根据端口号关闭进程的方法
2018/11/06 Python
Python编程深度学习绘图库之matplotlib
2018/12/28 Python
Pandas中DataFrame的分组/分割/合并的实现
2019/07/16 Python
详解python播放音频的三种方法
2019/09/23 Python
Python函数参数类型及排序原理总结
2019/12/19 Python
python读取excel数据并且画图的实现示例
2021/02/08 Python
Hibernate持久层技术
2013/12/16 面试题
护士自我鉴定
2013/10/23 职场文书
上课迟到检讨书100字
2014/01/11 职场文书
班级学习计划书
2014/04/27 职场文书
无毒社区工作方案
2014/05/23 职场文书
师范生自荐信模板
2014/05/28 职场文书
幼儿园课题方案
2014/06/09 职场文书
三十年同学聚会致辞
2015/07/28 职场文书
JS代码编译器Monaco使用方法
2021/06/11 Javascript