缺少标识符?IE,你不用那么认真吧!

Thursday, October 29, 2009 吉光片羽 2

开发TaoNo.cn,用Jquery写了一个判断来载入淘宝频道,测试成功,在优化代码的时候,发现每次都要重新载入一个完整的框架,有点浪费字节,于是将框架整合成单一,根据不同情况指令不同的参数,工作在Firefox下圆满完成,却不想,刚准备用IE将网页另存为看看字节数,浏览器却报错了。“第82行,第5个字符,缺少标识符。”于是乎赶紧查源码,将整个判断屏蔽,结果没问题了,接着就一个个排查,又顺便百度了相关答案:

该错误是因为JavaScript在IE下和Firefox下不兼容的结果。对于JavaScript来说,如果存在属性列表的形式,在firefox下,最后一个属性后面的“,”可有可无,而在IE下,不能有这个逗号,否则就会报某行”缺少标识符、字符串或数字“的错误。
解决办法: 根据IE的错误提示,查看源代码,找到对应的行,修改源代码,将该行中的js属性列表的最后一个属性后面的逗号去掉即可。

可怎么我也没找到逗号啊,于是将所有的“;”号给去掉了,问题还是没有解决。突然灵机一现,貌似我定义的函数有问题?果然,在对代码大动干戈之后,发现了元凶。我把class类直接用class来定义了,晕死。

var class = ""
$(body).append('<div class="'+class+'">文字</div>')


当时写的时候心里就嘀咕,可发现他没有变色,于是乎便没太在意,况且Firefox下完全察觉不到任何问题。哎,我说IE你在么就这么犟呢?是Firefox粗心了还是你太认真了呀!

应gavin的疑问,过来补充一下。我的这个实例中出现“缺少标识符”的原因就是使用了保留名称,如 class 。解决办法就是避免直接使用JS的保留字符,JQuery里可以习惯性的加上个$就没问题啦。代码如下:

var classes = ""
var $class = ""


最后再补充一下JavaScript的保留字,其中就有我傻乎乎用到的 class:

abstract
boolean  break  byte
case  catch  char  class  const  continue
default  do  double
else  extends
false  final  finally  float  for  function
goto
if  implements  import  in  instanceof  int  interface
long
native  new  null
package  private  protected  public
return
short  static  super  switch  synchronized
this  throw  throws  transient  true  try
var  void
while  with

点击这里获取该日志的TrackBack引用地址

日志标签: JQuery  JS  浏览器  错误  Firefox  IE  前端开发  

已有人对此文发表了评论

  1. 引用该评论 不见不散 11/4/2009 12:14:08 PM 回复
    这个页面很漂亮!
    吉光片羽 于 2009-11-8 18:29:16 回复

    感谢赞美,嘿嘿!

  2. 引用该评论 gavin 10/30/2009 1:40:43 PM 回复
    问题描述的不很清楚啊,只有修正后的代码没有问题代码看得不是很懂。
    吉光片羽 于 2009-10-30 18:55:48 回复

    呃,大概补充了一下,希望对你有帮助。

发表评论:

邮箱网址为选填;若您注册了GRAVATAR,请填写邮箱(不会公开),否则最好不填,您可在提交评论前选择表情头像;点击他人头像可引用其评论。插入UBB

About me

Name: KandyTang
Age: 20+
Location: Guilin, China
QQ: 121885959
Email: KandyT@qq.com

My Works

中文酷博聚合 汽车手绘·视频·教程 史努比(中文)网 免费的PJBlog皮肤 淘宝创意导购 桂林{摄影}品牌

Gallery

Unnamed Album

Unnam... (4)

复线文字LOGO设计

复线文字L... (10)

订书钉的创意-微型城市

订书钉的创... (4)

2010元宵烟火

2010元宵烟火 (7)

国外贺卡设计欣赏

国外贺卡设计欣赏 (20)