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 相关文章推荐
popdiv
Jul 14 Javascript
JavaScript CSS修改学习第六章 拖拽
Feb 19 Javascript
jquery validator 插件增加日期比较方法
Feb 21 Javascript
基于jQuery的的一个隔行变色,鼠标移动变色的小插件
Jul 06 Javascript
Script的加载方法小结
Jan 12 Javascript
js arguments对象应用介绍
Nov 28 Javascript
js自定义事件及事件交互原理概述(二)
Feb 01 Javascript
jquery二级导航内容均分的原理及实现
Aug 13 Javascript
jquery $.each() 使用小探
Aug 23 Javascript
js history对象简单实现返回和前进
Oct 30 Javascript
JavaScript队列函数和异步执行详解
Jun 19 Javascript
Vue组件模板的几种书写形式(3种)
Feb 19 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
php调用mysql数据 dbclass类
2011/05/07 PHP
php解压文件代码实现php在线解压
2014/02/13 PHP
php使用fullcalendar日历插件详解
2019/03/06 PHP
Yii使用DbTarget实现日志功能的示例代码
2020/07/21 PHP
Jquery 高亮显示文本中重要的关键字
2009/12/24 Javascript
javascript 得到变量类型的函数
2010/05/19 Javascript
JQuery动态创建DOM、表单元素的实现代码
2011/08/09 Javascript
jquery入门—选择器实现隔行变色实例代码
2013/01/04 Javascript
Javascript 按位取反运算符 (~)
2014/02/04 Javascript
ExtJS判断IE浏览器类型的方法
2014/02/10 Javascript
解析Node.js基于模块和包的代码部署方式
2016/02/16 Javascript
阻止表单提交按钮多次提交的完美解决方法
2016/05/16 Javascript
Bootstrap3 Grid system原理及应用详解
2016/09/30 Javascript
bootstrap table复杂操作代码
2016/11/01 Javascript
JS/jQuery判断DOM节点是否存在的简单方法
2016/11/24 Javascript
vue监听对象及对象属性问题
2018/08/20 Javascript
Vue-CLI 3.X 部署项目至生产服务器的方法
2019/03/22 Javascript
vue实现多组关键词对应高亮显示功能
2019/07/25 Javascript
小程序实现锚点滑动效果
2019/09/23 Javascript
通过实例解析chrome如何在mac环境中安装vue-devtools插件
2020/07/10 Javascript
[01:25]2015国际邀请赛最佳短片奖——斧王《拆塔英雄:天赋异禀》
2015/09/22 DOTA
[51:27]LGD vs Liquid 2019国际邀请赛小组赛 BO2 第二场 8.16
2019/08/19 DOTA
Python数据类型详解(四)字典:dict
2016/05/12 Python
微信跳一跳辅助python代码实现
2018/01/05 Python
python 实时得到cpu和内存的使用情况方法
2018/06/11 Python
python+webdriver自动化环境搭建步骤详解
2019/06/03 Python
基于Python实现船舶的MMSI的获取(推荐)
2019/10/21 Python
python中tkinter窗口位置\坐标\大小等实现示例
2020/07/09 Python
全面介绍python中很常用的单元测试框架unitest
2020/12/14 Python
社区优秀志愿者先进事迹
2014/05/09 职场文书
常务副总经理任命书
2014/06/05 职场文书
选秀节目策划方案
2014/06/06 职场文书
服务明星事迹材料
2014/12/29 职场文书
体育教师个人工作总结
2015/02/09 职场文书
详解pytorch创建tensor函数
2022/03/22 Python
Android 界面一键变灰 深色主题工具类
2022/04/28 Java/Android