一个逗号引发的JavaScript血案


这两天重构了一个商城模板的首页,在最后完成时,我按照惯例进行兼容性测试。通常我测试的浏览器一般是IE系列(6、7、8、9)、Firefox和Chrome。网页在Firefox和Chrome中正常显示,IE8和IE9也正常。但在IE6和IE7中出现了一个奇怪的Bug,最终花费几个小时,请朋友帮忙,终于找出罪魁祸首,原来是我使用的一个名为soChange的jQuery插件,因为我多加了一个逗号,因此我将本文命名为一个逗号引发的JavaScript血案。

我使用了jQuery比较经典的1.3.2版本,然后加上soChange插件,用来做Banner的Slider。另外,我写了一个custom.js文件,对一些DOM进行简单操作。js文件引用顺序依次是jQuery、soChange、custom.js。但在IE6和IE7中,soChange作用的Banner切换完全不显示了,与此同时,所有定义在custom.js中的语句和函数都不生效。

$(function() {
  $('#banner li').soChange({
    thumbObj:'#banner-num li',
    thumbNowClass:'on', 
    changeTime:3000,
    thumbOverEvent:false,//就是左边这个逗号让IE6、7噎住了
  });	
});

出错部分的代码如上所示。由于这段代码写在custom.js文件中,因此它的错误导致整个文件出错,我在文件中定义的所有DOM操作也都失效了。最初我百思不得其解,我完全没有想到会是那个多余的逗号引发的问题,因为JS水平有限,我根本不知道有了这个逗号和没有这个逗号有多大的区别,当然,我只知道前面每行末尾的逗号是必须的,至于最后一行,我想当然的就加上了逗号。没想到花费几个小时的时间出错就在一个逗号上,看来要认真学习JS了。

百度上和Google上搜索了一下,发现很多人也碰到这个问题。但是我还是不太明白具体的原理,希望有懂的朋友讲解一下。

本文为原创,转载请注明来自 THIS IS IT - 夜色冷月,并保留原文链接

相关日志

留下足迹