技术头条 - 一个快速在微博传播文章的方式     搜索本站
您现在的位置首页 --> JavaScript --> js代码因逗号不规范导致IE不兼容的问题

js代码因逗号不规范导致IE不兼容的问题

浏览:1143次  出处信息

   在用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运行的话,其实是会报错的。那么既然代码已经写成这样了,怎么检测到这个问题呢!

File Search

图1:File Search

   如上图1所示,可以用eclipse的File Search功能,利用正则表达式进行搜索,正则表达式为,\s*}。不过,这有个问题,只能检索出上面的第一处错误,对于加了//或者/**/来注释的情况,是检测不出来。不过,你也可以用yuicompressor这样的js代码压缩工具来压缩代码,压缩的时候会将其中的所有的注释全部去掉,然后再来检测压缩后的js文件即可。当然,你也可以自己写算法来检测,不过,这个对于普通人来说还是有难度的!

   不过,我建议用另一个方法,就是利用插件,我这里用的是Spket插件,Spket的官网是:http://www.spket.com/,可以到里面去下载Spket的eclipse插件,也可以直接在eclipse的market中下载,下载完以后安装下这个插件,然后将js文件用spket打开。

利用Spket检测

图2:利用Spket检测

   如上图2所示,可以发现Spket自动的检测了代码的不规范,将其中有问题的地方都标注了出来,我是建议用这个方法,因为可以在编写代码的时候,就发现问题,有助于写出规范漂亮的代码!另提一下,有些时候兼容性是因为使用的对象是IE中不存在的,比如console对象,在火狐和谷歌中是存在的,但是在ie中使用console.info就报错了!所以,记得把一些不兼容的对象从代码中剔除掉!

建议继续学习:

  1. 12款很棒的浏览器兼容性测试工具推荐    (阅读:4863)
  2. Javascript和CSS浏览器兼容总结    (阅读:3912)
  3. 如何更改字段至兼容的不同类型    (阅读:3081)
  4. 兼容所有浏览器的设为首页与显示小策略    (阅读:2954)
  5. 前端设计中的浏览器CSS Hack汇总    (阅读:2778)
  6. 定位元素间的Z值比较及z-index在不同浏览器下默认值的影响    (阅读:2667)
  7. 多余的逗号    (阅读:2271)
  8. 抛弃 CSS Hacks 后的浏览器兼容方案    (阅读:1965)
  9. 抛弃 CSS Hacks 后的浏览器兼容方案    (阅读:1685)
  10. 让数据解析能够做到向前向后完全兼容(最近做项目总结)    (阅读:1593)
QQ技术交流群:445447336,欢迎加入!
扫一扫订阅我的微信号:IT技术博客大学习
© 2009 - 2024 by blogread.cn 微博:@IT技术博客大学习

京ICP备15002552号-1