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
Javascript 实现复制(Copy)动作方法大全
Jun 20 Javascript
jquery的attr方法禁用表单元素禁用输入内容
Jun 23 Javascript
jQuery实现Tab选项卡切换效果简单演示
Nov 23 Javascript
AngularJS入门教程之控制器详解
Jul 27 Javascript
JavaScript 中有关数组对象的方法(详解)
Aug 15 Javascript
实现easyui的datagrid导出为excel的示例代码
Nov 10 Javascript
解决vue addRoutes不生效问题
Aug 04 Javascript
JS PHP字符串截取函数实现原理解析
Aug 29 Javascript
JavaScript 防抖和节流遇见的奇怪问题及解决
Nov 20 Javascript
webpack的移动端适配方案小结
Jul 25 Javascript
React四级菜单的实现
Apr 08 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
全国FM电台频率大全 - 19 广东省
2020/03/11 无线电
PHP进阶学习之类的自动加载机制原理分析
2019/06/18 PHP
Js 中debug方式
2010/02/07 Javascript
js实现宇宙星空背景效果的方法
2015/03/03 Javascript
js实现精确到秒的日期选择器完整实例
2016/04/30 Javascript
easyui datebox 时间限制,datebox开始时间限制结束时间,datebox截止日期比起始日期大的实现代码
2017/01/12 Javascript
JavaScript实现跟随滚动缓冲运动广告框
2017/07/15 Javascript
简单实现js进度条加载效果
2020/03/25 Javascript
响应式框架Bootstrap栅格系统的实例
2017/12/19 Javascript
基于webpack4.X从零搭建React脚手架的方法步骤
2018/12/23 Javascript
手把手教你如何编译打包video.js
2020/12/09 Javascript
python自动化测试之连接几组测试包实例
2014/09/28 Python
老生常谈进程线程协程那些事儿
2017/07/24 Python
Python实现可自定义大小的截屏功能
2018/01/20 Python
Java实现的执行python脚本工具类示例【使用jython.jar】
2018/03/29 Python
PyQt5每天必学之关闭窗口
2018/04/19 Python
Python 控制终端输出文字的实例
2019/07/12 Python
Django使用 Bootstrap 样式修改书籍列表过程解析
2019/08/09 Python
Python如何获取文件路径/目录
2020/09/22 Python
详解HTML5中div和section以及article的区别
2015/07/14 HTML / CSS
澳大利亚在线家具、灯饰和家居装饰店:LivingStyles
2018/11/20 全球购物
Tostadora意大利:定制T恤
2019/04/08 全球购物
施华洛世奇匈牙利官网:SWAROVSKI匈牙利
2019/07/06 全球购物
新学期教师寄语
2014/04/02 职场文书
8和9的加减法教学反思
2014/05/01 职场文书
简洁的英文求职信范文
2014/05/03 职场文书
标准毕业生自荐信
2014/06/24 职场文书
汽修专业自荐信
2014/07/07 职场文书
英语系毕业生求职信
2014/07/13 职场文书
乡镇机关党员民主评议表自我评价
2014/09/21 职场文书
2014年科协工作总结
2014/12/09 职场文书
疾病证明书
2015/06/19 职场文书
2015年度女工工作总结
2015/10/22 职场文书
创业计划书之个人工作室
2019/08/22 职场文书
Python爬虫实战之爬取京东商品数据并实实现数据可视化
2021/06/07 Python
mysql 8.0.27 绿色解压版安装教程及配置方法
2022/04/20 MySQL