一个行尾逗号引发的悲剧
一个设备上运行的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全都如此脆弱