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 相关文章推荐
animate动画示例(泪奔的小孩)及stop和delay的使用
May 06 Javascript
JQuery记住用户名和密码的具体实现
Apr 04 Javascript
JS实现进入页面时渐变背景色的方法
Feb 25 Javascript
javascript基本包装类型介绍
Apr 10 Javascript
jQuery实现移动端滑块拖动选择数字效果
Dec 24 Javascript
jQuery中layer分页器的使用
Mar 13 Javascript
javascript数据结构之串的概念与用法分析
Apr 12 Javascript
vue bootstrap小例子一枚
Jun 09 Javascript
JavaScript实现提交模式窗口后刷新父窗口数据的方法
Jun 16 Javascript
使用JS代码实现俄罗斯方块游戏
Aug 03 Javascript
如何使用 vue + d3 画一棵树
Dec 03 Javascript
jQuery HTML获取内容和属性操作实例分析
May 20 jQuery
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
dede全站URL静态化改造[070414更正]
2007/04/17 PHP
PHP如何编写易读的代码
2007/07/10 PHP
对text数据类型不支持代码页转换 从: 1252 到: 936
2011/04/23 PHP
PHP乱码问题,UTF-8乱码常见问题小结
2012/04/09 PHP
PHP+jQuery实现自动补全功能源码
2013/05/15 PHP
Ajax实现对静态页面的文章访问统计功能示例
2016/10/10 PHP
详解PHP用substr函数截取字符串中的某部分
2016/12/03 PHP
PHP判断是否是微信打开还是浏览器打开的方法
2019/02/27 PHP
微信公众平台开发教程⑥ 微信开发集成类的使用图文详解
2019/04/10 PHP
jquery 元素相对定位代码
2010/10/15 Javascript
js data日期初始化的5种方法
2013/12/29 Javascript
javascript教程之不完整的继承(js原型链)
2014/01/13 Javascript
jquery图片播放浏览插件prettyPhoto使用详解
2014/12/19 Javascript
基于JavaScript代码实现pc与手机之间的跳转
2015/12/23 Javascript
bootstrap中使用google prettify让代码高亮的方法
2016/10/21 Javascript
解决vue.js在编写过程中出现空格不规范报错的问题
2017/09/20 Javascript
ES6学习教程之模板字符串详解
2017/10/09 Javascript
微信小程序实现卡片左右滑动效果的示例代码
2019/05/01 Javascript
vue项目使用.env文件配置全局环境变量的方法
2019/10/24 Javascript
vant中的toast轻提示实现代码
2020/11/04 Javascript
python监控网卡流量并使用graphite绘图的示例
2014/04/27 Python
使用Python读写及压缩和解压缩文件的示例
2016/07/08 Python
python绘制漏斗图步骤详解
2019/03/04 Python
python实现随机漫步方法和原理
2019/06/10 Python
Python之Class&amp;Object用法详解
2019/12/25 Python
Python 防止死锁的方法
2020/07/29 Python
Python限制内存和CPU使用量的方法(Unix系统适用)
2020/08/04 Python
简单的命令查看安装的python版本号
2020/08/28 Python
Manduka官网:瑜伽垫、瑜伽毛巾和服装
2018/07/02 全球购物
实习护理工作自我评价
2013/09/25 职场文书
人事主管的岗位职责
2013/11/16 职场文书
文秘大学生求职信
2014/02/25 职场文书
员工生日会策划方案
2014/06/14 职场文书
2015年党员自评材料
2014/12/17 职场文书
质量保证书
2015/01/17 职场文书
利用 SQL Server 过滤索引提高查询语句的性能分析
2021/07/15 SQL Server