先介绍下这个问题的由来:
上午其他项目组人员在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解决。