2007/12/23更新创意无限,简单实用(javascript log)


Posted in Javascript onDecember 24, 2007

在javascript开发过程中,如果总是使用alert的方式调试程序,在某些简单的程序中是可行的. 
但是在通常的项目很复杂,这种方式已经很难满足,企业级开发的需要。 
比如ajax项目中,存在一个3000行左右JS文件,其中存在各种自定义的javascript对象。
开发的过程中,总是需要在js程序执行到某个关键点的时候,监视自定义对象的值或状态,
判断执行结果是否是预期的样子,如果您通过alert看到某些关联对象的值,是很困难的。
存在以下两个明显的缺点: 
1.假如一次执行中有n个关键点的值都想随时监视,使用alert您就不的不点够n次确认,给开发者的感觉是很不连贯也不直观,很难流畅发现隐藏很深的问题。 
2.用于调试的alert语句,在发布的时候必须删除掉,等有朝一日需要再次调试的时候,您就不得不回忆之前的关键点,分别加上alert,艰难的调试。 
使用该工具之后,以上两个问题,变得迎刃而解。 
鉴于以上需求,本人本着简单实用的原则, 
自己动手编写了这个javascript调试工具,全部程序只有300kb左右。 
该工具主要有以下特点: 
1.完全的可插入式思想,对目标程序没有任何负作用。 
2.使用方法简单,方便,只需要引入一行JS代码。 
使用后,您或许会发现,调试JS程序变的便利。 

//----------------------------------使用方法---------------------------------------------//
步骤1.将下载后JSDebugTool.zip,解压到任意目录,比如:D:\tools\JSDebugTool 
步骤2.将类似于下面这样的一行JS代码加入到您的目标程序(JSP,ASP,HTML,PHP等)中,下面的写法都是支持的.
<!-- debug功能不开启、不显示time、使用相对路径引入debugInner.file--> 
<SCRIPT language=javascript debug=false showtime=false src="../JSDebugTool/debugInner.file"></script> 
<!-- debug功能开启、显示time、使用WEB路径引入debugInner.file--> 
<SCRIPT language=javascript debug=true showtime=true src="http://localhost:8080/myproject/JSDebugTool/debugInner.file"></script> 
<!-- debug功能开启、不显示time、使用本地绝对路径引入debugInner.file--> 
<SCRIPT language=javascript src="D:/tools/JSDebugTool/debugInner.file"></script> 
※注释: 
debug=true/false 
    true : Javascript debug 功能开启,默认值.(Development) 
    false : Javascript debug 功能关闭.(Release) 
    不设定"debug"参数时,默认为true. 
src属性可以设定为(绝对路径、相对路径、WEB路径等) 
    debugInner.file : 采用嵌入模式模式 
showtime=true/false  
    true : 在每条debug信息前显示当前时间。 
    false : 不显示当前时间,只显示debug信息。 
    不设定"showtime"参数时,默认为false. 
url属性 可以为目标页面的url,比如http://www.baidu.com
  -当设置了url参数时,将url指向的网页的innerHTML加入到targetpage div中

步骤3.测试代码如下: 
<!--TEST begin--> 
<script> 
    function test(){ 
        var head = document.getElementsByTagName('HEAD').item(0); 
        jslog(null,"red");//null 
        jslog(1/3,"red");//number 
        jslog(1==2,"red");//boolean 
        jslog(test,"blue");//function 
        jslog("hello world!","red");//string 
        jslog(head);//object 
    } 
</script> 
<input type="button" value="TEST" > 
<!--TEST end-->
项目庞大的时候,需要总是在程序中保留一些调试信息,必要的时候进行调试。 
所以,能够让关键点的信息随时打印出来也是很重要的,同时保证在Release之后,对目标脚本执行性能没有任何影响是必须要考虑的问题。 
本工具提供的print接口是:jslog(msg,color);//msg:信息 color:信息的颜色
如果release的时候,你希望将"步骤2"加入到目标程序中的JS删除,也可以在您的程序中重构一个方法,名字随意.比如: 
function out(msg,color){ 
    if(jslog) jslog(msg,color); 

统一使用自己的定义的方法也可以,比如: 
function test(){ 
    out(null,"red");//null 
    out(1/3,"red");//number 
    out(1==2,"red");//boolean 
    out(test,"blue");//function 
    out("hello world!","red");//string 

不过通常来说Release的时候将debug开关设置为:debug=false,不需要删除目标程序中的调试代码,对目标JS程序执行性能无任何影响;需要再次调试时,只需要将debug开关设置为:debug=true 即可.

//----------------------------------最新下载---------------------------------------//

下载(2007/12/23 更新): http://www.box.net/shared/bc3s1hdkw0

//----------------------------------更新履历---------------------------------------//

2007/12/23 更新:(目前共15K)
1.对jslog中的内部事件进行统一管理.内测阶段,留了一个测试"取消事件注册"的接口-通过双击console 可以调用
2.debugInner页面布局调整,使debugInner中的console浮动、可拖动、可调整宽度.在console中top和left小于40的部位可拖。
说明: 希望能趋于简单,实用,不喜欢臃肿的。今后只更新debugInner,不再更新debugPopup

Javascript 相关文章推荐
jQuery插件formValidator自定义函数扩展功能实例详解
Nov 25 Javascript
JS设置下拉列表框当前所选值的方法
Dec 22 Javascript
JavaScript入门教程之引用类型
May 04 Javascript
使用jQuery.form.js/springmvc框架实现文件上传功能
May 12 Javascript
AngularJS基础 ng-show 指令简单示例
Aug 03 Javascript
Angularjs 实现一个幻灯片示例代码
Sep 08 Javascript
Webstorm2016使用技巧(SVN插件使用)
Oct 29 Javascript
浅谈javascript错误处理
Aug 11 Javascript
原生js+css调节音量滑块
Jan 15 Javascript
微信小程序 flexbox layout快速实现基本布局的解决方案
Mar 24 Javascript
精读《Vue3.0 Function API》
May 20 Javascript
深入了解Vue.js 混入(mixins)
Jul 23 Javascript
两个DIV等高的JS的实现代码
Dec 23 #Javascript
可以显示单图片,多图片ajax请求的ThickBox3.1类下载
Dec 23 #Javascript
表单项的name命名为submit、reset引起的问题
Dec 22 #Javascript
mapper--图片热点区域高亮组件官方站点
Dec 22 #Javascript
使Ext的Template可以解析二层的json数据的方法
Dec 22 #Javascript
IE与Firefox下javascript getyear年份的兼容性写法
Dec 20 #Javascript
javascript支持firefox,ie7页面布局拖拽效果代码
Dec 20 #Javascript
You might like
理解PHP5中static和const关键字的区别
2007/03/19 PHP
php通过数组实现多条件查询实现方法(字符串分割)
2014/05/06 PHP
优化JavaScript脚本的性能的几个注意事项
2006/12/22 Javascript
判断多个元素(RADIO,CHECKBOX等)是否被选择的原理说明
2009/02/18 Javascript
javascript 解析url的search方法
2010/02/09 Javascript
JavaScript 操作table,可以新增行和列并且隔一行换背景色代码分享
2013/07/05 Javascript
jquery对ajax的支持介绍
2013/12/10 Javascript
js创建元素(节点)示例
2014/01/02 Javascript
js日期联动示例
2014/05/02 Javascript
jQuery验证插件 Validate详解
2014/11/20 Javascript
jQuery中数据缓存$.data的用法及源码完全解析
2016/04/29 Javascript
jQuery中each()、find()和filter()等节点操作方法详解(推荐)
2016/05/25 Javascript
JS实现title标题栏文字不间断滚动显示效果
2016/09/07 Javascript
vue项目中做编辑功能传递数据时遇到问题的解决方法
2016/12/19 Javascript
echarts3 使用总结(绘制各种图表,地图)
2017/01/05 Javascript
完美解决input[type=number]无法显示非数字字符的问题
2017/02/28 Javascript
使用JS来动态操作css的几种方法
2019/12/18 Javascript
jQuery+Ajax+js实现请求json格式数据并渲染到html页面操作示例
2020/06/02 jQuery
jQuery实现异步上传一个或多个文件
2020/08/17 jQuery
python实现斐波那契递归函数的方法
2014/09/08 Python
python基础教程项目三之万能的XML
2018/04/02 Python
python 实现矩阵按对角线打印
2019/11/29 Python
基于pycharm实现批量修改变量名
2020/06/02 Python
Python爬虫之Selenium警告框(弹窗)处理
2020/12/04 Python
一款纯css3实现的响应式导航
2014/10/31 HTML / CSS
详解HTML5中的picture元素响应式处理图片
2018/01/03 HTML / CSS
世界上第一个创建了罩杯系统的美国内衣品牌:Maidenform
2019/03/23 全球购物
GAZMAN官网:澳大利亚领先的男装品牌
2019/12/19 全球购物
关于是否需要写商业计划书
2014/02/07 职场文书
永远跟党走演讲稿
2014/09/12 职场文书
新年晚会开场白
2015/05/29 职场文书
退休职工欢送会致辞
2015/08/01 职场文书
本地通过nginx配置反向代理的全过程记录
2021/03/31 Servers
mysql对于模糊查询like的一些汇总
2021/05/09 MySQL
python引入其他文件夹下的py文件具体方法
2021/05/23 Python
为什么MySQL 删除表数据 磁盘空间还一直被占用
2021/10/16 MySQL