IE8下Extjs報缺少':'符號錯誤

  • 2019 年 11 月 5 日
  • 筆記

先介紹下這個問題的由來:

上午其他項目組人員在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解決。