Friday, May 18, 2012


一个行尾逗号引发的悲剧

一个设备上运行的http管理界面的online help, 其中有一个help.js定义help页面名称,用于链接管理界面上随处可见的"?", 点击"?"即可直接打开online help并跳转到对应help页面;

var helpMap = {
        none:                                           "Overview.html",
        SystemSummary:                          "SystemSummary.html",
        InventoryCPU:                           "InventoryCPU.html",
        [...]
        ClearConfigs:               "ClearConfigs.html"
};

上个月在这张查找表中添加最末一项,一不小心多写了个逗号;这在C语言数组中很常见,最后一项的行尾逗号可有可无,但写起来比较美观、一致


        ClearConfigs:               "ClearConfigs.html",

本人常用Firefox/Chrome用起来都没问题;直到一个月后某Windows用户用IE打开管理界面,这个也没问题,但尝试online help的时候悲剧了。我记得二月中的一个版本当时为修正支持Chrome问题时测试过IE没问题,为些只能从那一个 good build 开始了二分查找,过程类似于git bisect

最后定位问题在于这个行尾逗号,必须删除。怎么都不敢相信,IE6,IE7,IE8,IE9全都如此脆弱