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 相关文章推荐
JavaScript 高级篇之闭包、模拟类,继承(五)
Apr 07 Javascript
js实现浏览器的各种菜单命令比如打印、查看源文件等等
Oct 24 Javascript
jQuery 的全选(全非选)即取得被选中的值使用介绍
Nov 12 Javascript
7个JS基础知识总结
Mar 05 Javascript
JavaScript中property和attribute的区别详细介绍
Mar 03 Javascript
javascript实现列表滚动的方法
Jul 30 Javascript
Jquery实现顶部弹出框特效
Aug 08 Javascript
详解JavaScript的流程控制语句
Nov 30 Javascript
Vue实现6位数密码效果
Aug 18 Javascript
js正则取值的结果数组调试方法
Oct 10 Javascript
vue滚动固定顶部及修改样式的实例代码
May 30 Javascript
微信小程序自定义navigationBar顶部导航栏适配所有机型(附完整案例)
Apr 26 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
三国漫画《火凤燎原》宣布动画化PV放出 预计2020年播出
2020/03/08 国漫
phpmyadmin 3.4 空密码登录的实现方法
2010/05/29 PHP
php中stream(流)的用法
2014/03/25 PHP
让回调函数 showResponse 也带上参数的代码
2007/08/13 Javascript
js加解密 脚本解密
2008/02/22 Javascript
javaScript 读取和设置文档元素的样式属性
2009/04/14 Javascript
JQuery判断radio是否选中并获取选中值的示例代码
2014/10/17 Javascript
JS获取IMG图片高宽的简单实例
2016/05/17 Javascript
arcgis for js 修改infowindow样式的方法
2016/11/02 Javascript
原生js实现淘宝购物车功能
2020/06/23 Javascript
使用JavaScript触发过渡效果的方法
2017/01/19 Javascript
Vue2组件tree实现无限级树形菜单
2017/03/29 Javascript
jQuery中将json数据显示到页面表格的方法
2018/05/27 jQuery
vue.js删除列表中的一行
2018/06/30 Javascript
JavaScript基础之静态方法和实例方法分析
2018/12/26 Javascript
Vue实现日历小插件
2019/06/26 Javascript
关于layui导航栏不展示下拉列表的解决方法
2019/09/25 Javascript
vue实现商品列表的添加删除实例讲解
2020/05/14 Javascript
Python 2.7.x 和 3.x 版本的重要区别小结
2014/11/28 Python
Python获取SQLite查询结果表列名的方法
2017/06/21 Python
python数据类型判断type与isinstance的区别实例解析
2017/10/31 Python
python实现文本界面网络聊天室
2018/12/12 Python
Python 转换RGB颜色值的示例代码
2019/10/13 Python
Python如何使用OS模块调用cmd
2020/02/27 Python
实现ECharts双Y轴左右刻度线一致的例子
2020/05/16 Python
Derek Rose官网:英国高档睡衣、家居服和内衣品牌
2020/01/18 全球购物
什么造成了Java里面的异常
2016/04/24 面试题
室内设计专业学生的自我评价分享
2013/11/27 职场文书
深入开展党的群众路线教育实践活动方案
2014/02/04 职场文书
《邮票齿孔的故事》教学反思
2014/02/22 职场文书
中学生民族团结演讲稿
2014/08/27 职场文书
2015教师年度思想工作总结
2015/04/30 职场文书
警示教育观后感
2015/06/17 职场文书
单身狗福利?Python爬取某婚恋网征婚数据
2021/06/03 Python
postgres之jsonb属性的使用操作
2021/06/23 PostgreSQL
微信小程序结合ThinkPHP5授权登陆后获取手机号
2021/11/23 PHP