使用ExtJS作为前端开发时,发现系统在Google浏览器和Firefox下可以正常显示,但在IE浏览器打开时,会报错,错误信息会被期望识别,字符串或数字。后来我查代码的时候发现,IE不兼容是因为js代码中逗号的使用不规范。
由于我使用eclipse编写代码,我将介绍如何使用eclipse来解决这个问题:
例如,有以下非标准代码:
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,//等});如您所见,在100、150和中间有一个逗号(,)。如果用IE运行,实际上会报错。既然代码已经这样写了,我们怎么检测这个问题呢?
图1:文件搜索
如上图1所示,您可以使用eclipse的文件搜索功能通过正则表达式进行搜索,即,s*}。但是,有一个问题。只能检索上面的第一个错误,但是当添加//或/* */进行注释时,无法检测到该错误。但是,您也可以使用像yuicompressor这样的js代码压缩工具来压缩代码。压缩时,所有的注释都将被删除,然后可以检测到压缩的js文件。当然也可以自己写算法来检测,但是对于普通人来说还是很难的!
但是,我建议使用另一种方法,即使用插件。我在这里使用Spket插件。Spket的官方网站是:http://www.spket.com/,在这里可以下载Spket的eclipse插件,或者直接在eclipse的市场上下载。下载后,安装插件,然后用spket打开js文件。
图2:使用Spket进行检测。
如上图2所示,可以发现Spket自动检测到代码的不规则性,并标记出其中的所有问题。我建议用这个方法,因为写代码的时候可以发现问题,有助于写出漂亮的代码!另外,有时候兼容性是因为ie中不存在使用的对象,比如console对象,在Firefox和Google中都有,但是在IE中使用console.info会报错!所以,记得从代码中移除一些不兼容的对象!
我已经介绍了IE由于逗号不规范导致与JavaScript代码不兼容的问题,希望对大家有所帮助!