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 判断客户端浏览器类型代码
Mar 01 Javascript
基于javascript的JSON格式页面展示美化方法
Jul 02 Javascript
javascript设计模式之中介者模式Mediator
Dec 30 Javascript
7个让JavaScript变得更好的注意事项
Jan 28 Javascript
EasyUI中datagrid在ie下reload失败解决方案
Mar 09 Javascript
jQuery实现为图片添加镜头放大效果的方法
Jun 25 Javascript
JS实现响应鼠标点击动画渐变弹出层效果代码
Mar 25 Javascript
详谈JS中实现种子随机数及作用
Jul 19 Javascript
angularjs+bootstrap菜单的使用示例代码
Mar 07 Javascript
Angular4实现动态添加删除表单输入框功能
Aug 11 Javascript
webpack4 SCSS提取和懒加载的示例
Sep 03 Javascript
JS实现点击li标签弹出对应的索引功能【案例】
Feb 18 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
Re:从零开始的异世界生活 第2季 开播啦
2020/07/24 日漫
php缓冲 output_buffering的使用详解
2013/06/13 PHP
mantis安装、配置和使用中的问题小结
2014/07/14 PHP
PHP使用array_merge重新排列数组下标的方法
2015/07/22 PHP
php使用APC实现实时上传进度条功能
2015/10/26 PHP
php类的自动加载操作实例详解
2016/09/28 PHP
php实现留言板功能(代码详解)
2017/03/28 PHP
javascript下利用arguments实现string.format函数
2010/08/24 Javascript
有关于JS辅助函数inherit()的问题
2013/04/07 Javascript
JavaScript字符串插入、删除、替换函数使用示例
2013/07/25 Javascript
解决用jquery load加载页面到div时,不执行页面js的问题
2014/02/22 Javascript
不依赖Flash和任何JS库实现文本复制与剪切附源码下载
2015/10/09 Javascript
BootStrap 可编辑表Table格
2016/11/24 Javascript
jQuery中的一些小技巧
2017/01/18 Javascript
jQuery实现一个简单的轮播图
2017/02/19 Javascript
Angular在一个页面中使用两个ng-app的方法
2017/02/20 Javascript
JavaScript中document.referrer的用法详解
2017/07/04 Javascript
vue 插值 v-once,v-text, v-html详解
2018/01/19 Javascript
js canvas实现写字动画效果
2018/11/30 Javascript
Vue.js轮播图走马灯代码实例(全)
2019/05/08 Javascript
JS数组方法reduce的用法实例分析
2020/03/03 Javascript
前端使用crypto.js进行加密的函数代码
2020/08/16 Javascript
python解决字典中的值是列表问题的方法
2013/03/04 Python
python中的迭代和可迭代对象代码示例
2017/12/27 Python
Python使用装饰器进行django开发实例代码
2018/02/06 Python
python读取文件名称生成list的方法
2018/04/27 Python
在Pandas中给多层索引降级的方法
2018/11/16 Python
Linux CentOS Python开发环境搭建教程
2018/11/28 Python
Python基于WordCloud制作词云图
2019/11/29 Python
关于CSS Tooltips(鼠标经过时显示)的效果
2013/04/10 HTML / CSS
Html5移动端弹幕动画实现示例代码
2018/08/27 HTML / CSS
Regatta官网:英国最受欢迎的户外服装和鞋类品牌
2019/05/01 全球购物
澳大利亚领先的在线礼品网站:Gifts Australia
2020/08/15 全球购物
银行岗位培训心得体会
2016/01/09 职场文书
为什么代码规范要求SQL语句不要过多的join
2021/06/23 MySQL
nginx刷新页面出现404解决方案(亲测有效)
2022/03/18 Servers