这篇文章主要介绍了 JavaScript 代码因逗号不规范导致 IE 不兼容的问题的相关资料, 需要的朋友可以参考下
Javascript 是一种由 Netscape 的 LiveScript 发展而来的原型化继承的基于对象的动态类型的区分大小写的客户端脚本语言,主要目的是为了解决服务器端语言,比如 Perl,遗留的速度问题,为客户提供更流畅的浏览效果。
在用 ExtJS 做前端开发的时候,发现系统可以在谷歌浏览器、火狐下正常显示,但是用 IE 浏览器打开就会报错,报错信息如:Expected identified, string or number。后来,检查的代码的时候发现,是由于 js 代码中逗号用的不规范导致的 IE 不兼容。
由于我是用 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,
- // 这是备注1
- },
- {
- title: 'main panel',
- html: 'main content',
- region: 'center',
- /* 这是备注2*/
- }]
- });
- });
可以看到,在 100、150、center 后面都有一个逗号 (,),用 IE 运行的话,其实是会报错的。那么既然代码已经写成这样了,怎么检测到这个问题呢!
图 1:File Search
如上图 1 所示,可以用 eclipse 的 File Search 功能,利用正则表达式进行搜索,正则表达式为,\s*}。不过,这有个问题,只能检索出上面的第一处错误,对于加了 // 或者 /**/ 来注释的情况,是检测不出来。不过,你也可以用 yuicompressor 这样的 js 代码压缩工具来压缩代码,压缩的时候会将其中的所有的注释全部去掉,然后再来检测压缩后的 js 文件即可。当然,你也可以自己写算法来检测,不过,这个对于普通人来说还是有难度的!
不过,我建议用另一个方法,就是利用插件,我这里用的是 Spket 插件,Spket 的官网是:http://www.spket.com/,可以到里面去下载 Spket 的 eclipse 插件,也可以直接在 eclipse 的 market 中下载,下载完以后安装下这个插件,然后将 js 文件用 spket 打开。
图 2:利用 Spket 检测
如上图 2 所示,可以发现 Spket 自动的检测了代码的不规范,将其中有问题的地方都标注了出来,我是建议用这个方法,因为可以在编写代码的时候,就发现问题,有助于写出规范漂亮的代码!另提一下,有些时候兼容性是因为使用的对象是 IE 中不存在的,比如 console 对象,在火狐和谷歌中是存在的,但是在 ie 中使用 console.info 就报错了!所以,记得把一些不兼容的对象从代码中剔除掉!
以上给大家介绍了 JavaScript 代码因逗号不规范导致 IE 不兼容的问题,希望对大家有所帮助!
来源: http://www.phperz.com/article/17/0406/266966.html