IE8下Extjs报缺少':'符号错误


先介绍下这个问题的由来:

上午其他项目组人员在rtx上问,求帮忙解决ie8兼容性问题。

然后快到饭点,知道这个bug肯定不是那么好解决,肯定不能耽误吃饭时间。

果断说,下午来弄。

下午3点开始去看这个bug。

具体问题就是:点击修改按钮报了缺少':',186行错误。

看了下他的代码186行,是空白行,上下行,也并没有:符号,这错误报的有点看不懂了。

不过这才有意思嘛,两下三下就解决的bug,干起来多没劲。

IE8真的很蛋疼,调试起来特别麻烦。调试模式开启,找到报错地方,‘treeselector’为空或不是对象,171行。

再定位到创建这个对象的地方。发现ie下就是创建不了这个对象,对象值为undefined,而chrome下却可以正常创建。

Ext.create('Ext.ux.TreeSelector',{

  ......

});

而这个创建对象的方法是完全没毛病,也看不出任何破绽。

就思考,创建对象为空,是不是Ext.ux.TreeSelector没有加载出来导致的。

就在js文件头部require中加上‘Ext.ux.TreeSelector’,天真的以为这样就可以解决了,去上个洗手间想着回头来应该就没啥问题。

回来被告知,还是报错,整个页面都打不开了。

然后报错信息出来了,报错信息:‘缺少':',186行,TreeSelector.js’;

因为reqiure预先加载了这个Ext.ux.TreeSelector这个js出来,所以这个js的错误就提前暴露出来了。

找到jar包中的这个js源码,发现186行,arr.push({id,name}); 这种写法chrome下不会报错,而IE8下会报错。正确写法arr.push({id:1,name:'xx'})

bug解决。