脚本调试篇
yangdengfeng2003
这个作者很懒,什么都没留下…
展开
-
访问JavaScript对象的构造函数时失败
在JavaScript定义的对象中,不管是内部对象,还是用户自定的对象。如果该对象是从模态窗口(Modal Dialog)中创建并返回到主窗口中的,我们将无法在主窗口中取到该对象的构造函数(constructor)。 执行如下两个示例: 1、Main.htmhtml>head> title>Main Pagetitle> meta name="author"原创 2007-01-20 17:53:00 · 697 阅读 · 0 评论 -
JS类库Bindows1.3中的内存释放方式
我在前段时间介绍过IE中JavaScript脚本Memory Leak的问题,后来在几位热心网友的讨论下,基本认可了内存泄露的事实和原理。在小规模的测试case下,本来都达到了基本避免IE中脚本的ML问题。可是近来发现只以"仔细"来防止IE中脚本ML似乎是非常困难的一件事情,难道开始的讨论有错误吗? 何谓"仔细"呢?就是说在有对象相互引用的时候,在对象丢弃时(不一定是页面refresh原创 2007-01-20 17:57:00 · 636 阅读 · 0 评论 -
使用页面元素属性做状态判断的隐患
在做DHTML开发的时候,依赖一些页面元素的得值来作为页面的状态的判断,初看似乎并没有什么问题。可是在后期的开发和维护中,却是一个随时可能产生莫名其妙bug的隐藏炸弹。如果不小心引爆,那就只有郁闷的份了。 问题示例:在制作一个带有多个框架的框架页面时,由于为了一时的简单,直接使用了frame的宽度来作为页面状态的判断条件,代码如下: 这个示例中的代码在起初的运行和测试中都完全正原创 2007-01-20 17:36:00 · 485 阅读 · 0 评论 -
使用IE的地址栏来辅助调试Web页脚本
不小心使用Shift + Left Click去点击了一个链接目标(href)是脚本的超链接,结果却把是否调试脚本的对话框弄了出来。点击yes居然可以打开调试这一句脚本,可是这句脚本是哪里来的呢? 回头看看被新打开的那个IE,结果地址栏里就写着:javascript:open(url)呢。原来IE的地址栏可以使用"JavaScript:"这个声明来执行脚本也,在试试Jav原创 2007-01-20 17:28:00 · 730 阅读 · 0 评论 -
我所使用的JavaScript调试环境(1)
这段时间写脚本的机会比较多,也就对这些工具有个比较。我们都知道,工欲善其事,必先利其器嘛。有的人觉得脚本嘛有什么好调试的,一眼就看过来了,当然过于依赖于调试器很多时候也会让我们变得懒惰和不仔细,不过大多数的时候好的开发环境还是让我们事半功倍的。 其实回想起接触脚本的时间算起来还真的是有些念头了,从第一次做个人网页算起,00年吧,都要来5个年头了。那个时候学C语言也没多久,对TC2和T原创 2007-01-20 17:22:00 · 2106 阅读 · 0 评论 -
调试了半天,全都是复制代码惹得祸!
上次由于一个/t让我郁闷了半天,本以为自己已经在debug的时候很小心了,没有想到今天又载了一会。错误非常之低级,而debug费力又还非常之大,真是让人哭笑不得。所以干脆在blog的随笔里专门开辟一个叫"Debug中的滑铁卢"的分类,专门记录Debug时一些stupid的小事。 其实Coding是挺枯燥的,这个我在说Whidbey的Snippets功能时就说过,而且特别是重复的Co原创 2007-01-20 18:03:00 · 466 阅读 · 0 评论 -
在with语句中跨frame的变量引用问题
在脚本编程时使用with语句,可以大大的缩减使用多级对象引用代码行的长度,这是JScript提供给我们的一个Syntax Sugar。当然不使用with,使用临时变量也可以达到同样的效果。不过创建变量时起名确实不是一件很遐意的事,就连MASM高版本中也提供了一个@@(以及@F和@B)来处理临时标号的问题,看来大家都是比较懒得啦。 我也挺喜欢用with语句的,确实可以省不少的事情原创 2007-01-20 17:51:00 · 517 阅读 · 0 评论 -
原型方法的不同写法居然会影响调试
上次我写过一篇文章,讨论"JavaScript类定义原型方法的两种实现的区别"。研究后发现除了方法的初始化方式不同外,没有发现别的原则上的却别,也就是说用哪种方式都一样。可是后来发现在VS.NET中给原型方法设置断点来调试时,两种定义方式却出现了很大的差别。 先看如下代码示例: 1 ToolBar.prototype.Dispose = function() 2 { 3原创 2007-01-20 17:49:00 · 511 阅读 · 0 评论 -
这么小心还是在"08"向8的转换上栽了
关于javascript中的parseInt方法,本来没有什么好说的,它的功能就是把一个字符串从左向右的可识别的数字部分转换成数值,并且它还有个可选的参数radix。这不,问题就出在这个参数上了。 关于parseInt的解释msdn说得很清楚,抄过来就行了: parseInt(numString, [radix]) Arguments numString原创 2007-01-20 17:44:00 · 470 阅读 · 0 评论 -
使用debugger语句调试JScript的郁闷
在JScript3.0中,微软引入了一个叫debugger的关键,用来帮助我们调试脚本代码。这样一来,我们就可以摒弃使用错误语句来触发调试的土方法了。结果在使用debugger语句的时候,发现它的一个优点居然同时也成为了一个缺点,在某些时候还没有土方法好用,真是郁闷。 debugger关键字的作用是在JScript处于调试状态下运行时,为我们挂起当前执行并唤起脚本调试器。比如在我的机原创 2007-01-20 17:42:00 · 712 阅读 · 0 评论 -
我所使用的JavaScript调试环境(2)
真是不好意思,吃桃居然吃了一整天,下面继续说我的JavaScript调试环境。 不管我们是怎么调试JavaScript,他总是在browser里运行,下面我都说在IE里的情况。目前我使用IE6.0 sp1,要启动脚本调试,需要在IE的Tools->Internet Options的Advanced里uncheck Disabled Script Debugging.,否则脚本出错原创 2007-01-20 17:22:00 · 671 阅读 · 0 评论 -
被逮到一个初始状态考虑不周的Bug
这两天是产品beta1以后进行的新一轮bug扫荡,beta1以前产品的bug降低到了大家非常满意的水平。但是beta1以后QA Team发飚,bug总数biu的一下又上升到人均20个上下,真是让人恼火。不过幸好大部分是为了发布beta1而回归出来的UI方面的bug,不过今天却发现被逮到一个非常隐蔽的控件初始状态考虑不足的bug。 这个bug发生在一个纯脚本的TreeView控件上面,其异常表原创 2007-01-20 17:40:00 · 576 阅读 · 0 评论 -
在JavaScript中遭遇级联表达式陷阱
依稀还记得,在学习C语言的库函数时,很多字符串操作相关的函数都会返回和结果相关的指针。其实这个返回值很多时候都并不是非常必要,因为在我们的传入的参数中,十有八九已包含了这个指针。而加上这个返回值的最大好处就是,可以让我们方便的书写出级联表达式。但是这些年的实际工作中,越发觉得级联表达式是个魔鬼馅饼。 比如在C语言中,我们熟悉的字符串操作函数strcpy,strcat等,它们的原形一般是原创 2007-01-20 17:33:00 · 424 阅读 · 0 评论 -
今天居然遭遇了如此郁闷的调试问题:(
今天真是郁闷,本来就挺忙的,因为明天boss要看一个milestone的演示,我和team里的同事紧赶慢赶。本来看着就胜利在望了,可是下午吃饭回来调试的时候却被弄宕机。不是机器宕了,使人宕了。 复杂的代码已都基本写完了,而且自己都测试过很多遍了,手头的工作也就是组装。只不过组装的时候又会有很多的修改,虽然改动不大,可是需要改动的地方却比较得多,要让组件和页面协调起来嘛。开始都挺好的,没原创 2007-01-20 18:15:00 · 516 阅读 · 0 评论