top

Posts tagged with bug

骚扰我的JavaScript的陷阱

今天在Google Reader上看到一篇 JavaScript的陷阱 @ 随网之舞,颇为感慨,这些个错误我也是犯之再犯...以下也说说我的体会:

最常犯的错误

因为编辑器的帮助,养成了机械式的关闭一些匹配符号的习惯,所以也不会存在“不匹配的引号、圆括号或花括号”的问题,所以“多余的逗号”成了我最常犯的错误。由于写CSS的习惯,总会在每条css属性定义后加;,这样的习惯也使我在定义一些javascript对象的时候,会在每个属性后面加一个,。写的正欢,总会变成这样:

.highlight {
text-align:center;
font-size:1.1em;
color:lightblue;//CSS这样写没错}
...
var highlight = {
"text-align":"center",
"font-size":"1.1em",
"color":"lightblue",//javascript这样写,IE8以前的IE版本会报错}

如何防止这个问题,自己也很郁闷,也因此这一条在我的”错误排除榜“上高居榜首。

最郁闷的错误

最让人郁闷的是一些无意的错误,不会抛出错误,让人很难排查。文中提到的条件语句的第2个陷阱:

把第二个参数的值赋给第一个参数。因为它是一个逻辑问题,它将一直返回true且不会报错。

一个等号和两个等号,在庞大的代码里面,通常会很不起眼,很容易让人有错觉。自己啃这个骨(苦)头已经不是一次两次了,因此这个进入了”错误排除榜“的三甲。

最无知的错误

之前由于基础不扎实的缘故,经常会犯一些无知的错误,而浪费大把的时间来调试。比如文中提到的parseInt,一直不知道它有第二个参数。当然这闹了很多笑话,也让我长了脑子...

做事的时候一定要以一个平和的心态,不要让自己太High,当然这也是个人见解 :)

MultiFireFox 多版本firefox启动管理程序

在firefox 3处于beta的时候,相信很多人已经开始用上了,不过beta软件有些bug也算是正常的(firefox 3一天保守崩溃3次),所以你也不能完全抛弃之前的正式版。如何让他们共存呢?

在Windows和Linux上早就有办法,这里就不多介绍了。这次要推荐的MultiFireFox,用Python编写的,所以可以支持多平台,作者发布了一个包含了firefox beta 3的DMG文件,专门供mac用户使用,但是你也可以单独下载源文件自己编译。

其他参考文章:

CSS Mastery - 阅读笔记二

在"Styling lists and creating nav bars"章节发现一个对我来说很有用的ie bug fix:li {display:inline;}作者的注释是"Removes large gaps in IE/WIN".马上试验了一下,真的解决了一个长久困扰我的问题。

以前在做一些纵向的导航菜单的时候,经常会用到一个锚(a)的hover效果,范例可以看这里

li a {display:block;background:#000;color:#FFD800;}
li a:hover,li.here a {background:#570B06;}

这里我们把锚(a)块级化以后,在IE7.0之前的版本中,锚(a)后面会有一个空白textnode,另起一行的问题,这样便把各个li的间距加大了。我以前的fix方式,就是把html结构里li前后的空格都消灭掉,做法比较烦人...

现在好了,只要li {display:inline;}就可以了,多看书还是有益的 :)

 1