JavaScript代碼因逗號(hào)不規(guī)范導(dǎo)致IE不兼容的問題
在用ExtJS做前端開發(fā)的時(shí)候,發(fā)現(xiàn)系統(tǒng)可以在谷歌瀏覽器、火狐下正常顯示,但是用IE瀏覽器打開就會(huì)報(bào)錯(cuò),報(bào)錯(cuò)信息如:Expected identified, string or number。后來,檢查的代碼的時(shí)候發(fā)現(xiàn),是由于js代碼中逗號(hào)用的不規(guī)范導(dǎo)致的IE不兼容。
由于我是用eclipse來寫代碼的,下面我也就介紹怎么用eclipse來解決這個(gè)問題:
例如有下面這么一段不規(guī)范的代碼:
Ext.onReady(function() {
var panel = Ext.create('Ext.container.Viewport', {
layout : 'border',
items : [{
title : 'north panel',
html : 'north content',
region : 'north',
height : 100,
}, {
title : 'west panel',
html : 'west content',
region : 'west',
width : 150, // 這是備注1
}, {
title : 'main panel',
html : 'main content',
region : 'center',
/* 這是備注2*/
}]
});
});
可以看到,在100、150、center后面都有一個(gè)逗號(hào)(,),用IE運(yùn)行的話,其實(shí)是會(huì)報(bào)錯(cuò)的。那么既然代碼已經(jīng)寫成這樣了,怎么檢測(cè)到這個(gè)問題呢!
圖1:File Search
如上圖1所示,可以用eclipse的File Search功能,利用正則表達(dá)式進(jìn)行搜索,正則表達(dá)式為,\s*}。不過,這有個(gè)問題,只能檢索出上面的第一處錯(cuò)誤,對(duì)于加了//或者/**/來注釋的情況,是檢測(cè)不出來。不過,你也可以用yuicompressor這樣的js代碼壓縮工具來壓縮代碼,壓縮的時(shí)候會(huì)將其中的所有的注釋全部去掉,然后再來檢測(cè)壓縮后的js文件即可。當(dāng)然,你也可以自己寫算法來檢測(cè),不過,這個(gè)對(duì)于普通人來說還是有難度的!
不過,我建議用另一個(gè)方法,就是利用插件,我這里用的是Spket插件,Spket的官網(wǎng)是:http://www.spket.com/,可以到里面去下載Spket的eclipse插件,也可以直接在eclipse的market中下載,下載完以后安裝下這個(gè)插件,然后將js文件用spket打開。
圖2:利用Spket檢測(cè)
如上圖2所示,可以發(fā)現(xiàn)Spket自動(dòng)的檢測(cè)了代碼的不規(guī)范,將其中有問題的地方都標(biāo)注了出來,我是建議用這個(gè)方法,因?yàn)榭梢栽诰帉懘a的時(shí)候,就發(fā)現(xiàn)問題,有助于寫出規(guī)范漂亮的代碼!另提一下,有些時(shí)候兼容性是因?yàn)槭褂玫膶?duì)象是IE中不存在的,比如console對(duì)象,在火狐和谷歌中是存在的,但是在ie中使用console.info就報(bào)錯(cuò)了!所以,記得把一些不兼容的對(duì)象從代碼中剔除掉!
以上給大家介紹了JavaScript代碼因逗號(hào)不規(guī)范導(dǎo)致IE不兼容的問題,希望對(duì)大家有所幫助!
相關(guān)文章
JavaScript使用forEach()與jQuery使用each遍歷數(shù)組時(shí)return false 的區(qū)別
這篇文章主要介紹了JavaScript使用forEach()與jQuery使用each遍歷數(shù)組時(shí)return false 的區(qū)別,非常不錯(cuò),需要的朋友可以參考下2016-08-08
JS對(duì)select控件option選項(xiàng)的增刪改查示例代碼
Javascript操作select是表單中比較常見的,大家可以在網(wǎng)上搜索到很多的相關(guān)資料,接下來為大家詳細(xì)介紹下,JS動(dòng)態(tài)操作select中的各種方法,感興趣的朋友可以參考下2013-10-10
JS導(dǎo)出PDF插件的方法(支持中文、圖片使用路徑)
下面小編就為大家?guī)硪黄狫S導(dǎo)出PDF插件的方法(支持中文、圖片使用路徑)。小編覺得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧2016-07-07
Bootstrap 設(shè)置datetimepicker在屏幕上面彈出設(shè)置方法
datetimepicker默認(rèn)是在輸入框下面彈出的,但是遇到輸入框在屏幕下面時(shí),日期選擇框會(huì)有一部分在屏幕下面,顯示不了,因此需要能夠從上面彈出,下面小編給大家介紹下Bootstrap 設(shè)置datetimepicker在屏幕上面彈出的設(shè)置方法2017-03-03
詳解JS如何使用Promise緩存網(wǎng)絡(luò)請(qǐng)求
網(wǎng)絡(luò)請(qǐng)求是現(xiàn)代Web應(yīng)用中的常見操作,很多時(shí)候需要獲取服務(wù)器上的數(shù)據(jù),在進(jìn)行網(wǎng)絡(luò)請(qǐng)求時(shí),為了減輕服務(wù)器的壓力,緩存策略常被用來避免對(duì)同一數(shù)據(jù)的重復(fù)請(qǐng)求,本文將探討如何使用Promise結(jié)合緩存來高效處理網(wǎng)絡(luò)請(qǐng)求,需要的朋友可以參考下2023-12-12
使用canvas實(shí)現(xiàn)鯉魚躍龍門的動(dòng)畫效果
這篇文章主要給大家介紹了使用canvas實(shí)現(xiàn)鯉魚躍龍門的動(dòng)畫效果,文中通過代碼示例給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作有一定的幫助,感興趣的小伙伴可以自己動(dòng)手嘗試一下2024-02-02

