手机浏览 RSS 2.0 订阅 膘叔的简单人生 , 腾讯云RDS购买 | 超便宜的Vultr , 注册 | 登陆

javascipt的{}中逗号带来的困扰

首页 > Javascript >

随便javascript 第5版的书出来,JS的写法也就越来越多了,以前定义一个对象,还得写var o = new Object();现在好了,直接var o = {};

可是这样带来的问题不少(其实是IE和FF的兼容性问题)

下面是一个朋友痛苦的经历:

 

XML/HTML代码
  1. 最近把YUI()引入到了现在做的项目当中,感觉做ajax非常顺手   
  2.   
  3. 由于firefox下有firebug这个插件,所以开发的时候都是以ie为准   
  4. 稍微在ie下做些测试,一般都没有问题。   
  5.   
  6. 这次被一个逗号搞得非常辛苦。   
  7.   
  8. var send_email_callback =    
  9. {    
  10.     success:handleSuccess,    
  11.     failure:handleFailure,    
  12. };    
  13. 这段代码在firefox和ie下都不会报错   
  14. firefox运行正常,ie下导致整个脚本失效   
  15.   
  16. 调试都是用alert来调试,但是ie下alert的功能也失效了,无论alert放在文件的那个位置,都不会有弹框出来   
  17. 整个js文件代码长达300行,找的好辛苦。。。   
  18. 正确的应为: var send_email_callback =    
  19. {    
  20.     success:handleSuccess,    
  21.     failure:handleFailure    
  22. }; 唉,一个逗号引发的辛苦啊。。   
  23.   
  24. 这个错误应该是受到php里面array写法的影响   
  25. 经常在定义array时为了给array添加新值方便,一般都是会再加一个逗号。。。   
  26.   
  27. 另外,还有个地方也会导致脚本在ie下失效   
  28. _div_sending.className     = 'mail_sending';   
  29. //_div_sending.class     = 'mail_sending';   
  30. 其中第二行会导致脚本不能运行,也不会报错,同样无论什么地方放一个alert都不会有反应   
  31. 额,以前看一本书上说,给控件加class的值,这样好像会做到多个浏览器兼容。。。faint,或许是我记错了吧。。   
  32. 解决的办法,注释掉,或者用yui自带的添加的class的方法   
  33. 这段代码是几个星期前写的,那个时候还没有看到yui给控件加class的方法   
  34. YAHOO.util.Dom.addClass(_div_sending, 'mail_sending');   
  35. 希望有人可以告诉我,ie下调试js简单的方法   
  36. 额,我的js的水平也太臭了。。。额。。。。  

确实,在"}"前的最后一个","非常害人。在IE下死活会报错,而且FF下面又完全正常。现在我一看报错,就立马检查是否多了这个",",PHP的ARRAY习惯害人啊……总是担心可能会往配置数组里加东西,所以,每行最后都习惯性的加上逗号,现在……不太敢了。




本站采用创作共享版权协议, 要求署名、非商业和保持一致. 本站欢迎任何非商业应用的转载, 但须注明出自"膘叔", 保留原始链接, 此外还必须标注原文标题和链接.

Tags: json, js

« 上一篇 | 下一篇 »

只显示10条记录相关文章

javascript实现函数重载的深入探索 (浏览: 21084, 评论: 0)
golang的json处理 (浏览: 20915, 评论: 0)
JS模拟FLASH效果 (浏览: 20751, 评论: 0)
Javascript中各种trim的实现 (浏览: 20007, 评论: 0)
IE和FF下JS的不同点(更详细) (浏览: 19037, 评论: 0)
笔记:json_encode和jquery等 (浏览: 18372, 评论: 0)
对膘叔的文章感兴趣的朋友可以使用JS调用功能 (浏览: 17453, 评论: 0)
苹果推送注意事项 (浏览: 17280, 评论: 0)
JS 刷新页面的几个技巧 (浏览: 17265, 评论: 0)
go语言的json (浏览: 17039, 评论: 0)

6条记录访客评论

引用 影子 说过的话:
OK,json.js看不太懂,还是修改了asp文件,简单的替换了",}"这两个字符,暂时可以通过吧,以后看看会不会有什么更好的解决办法,谢谢!
呵呵,改动你改动的代码,才是最方便最合理的呀

Post by gouki on 2008, December 5, 3:01 PM 引用此文发表评论 #1

OK,json.js看不太懂,还是修改了asp文件,简单的替换了",}"这两个字符,暂时可以通过吧,以后看看会不会有什么更好的解决办法,谢谢!

Post by 影子 on 2008, December 5, 9:18 AM 引用此文发表评论 #2

如果是这样的话,那你只能尝试看一下这个json.js了,或者就是你说的ASP的程序的问题。因为这两种生成其实都是符合规范的,要么你改程序。。。。要么,就是修改那个js文件,但怎么想来都是改asp程序会更方便一点

Post by gouki on 2008, December 4, 9:15 AM 引用此文发表评论 #3

我觉得这可能是json.js为了适应各种浏览器而做的处理。因此我想能不能直接修改json.js文件来达到目的?可是我看了json.js源码,看不懂是在哪里修改?

Post by 影子 on 2008, December 4, 8:38 AM 引用此文发表评论 #4

其实这样的话,你可以自己写一段程序,把}前面的,用程序进行除去,比如可以批量替换",}"为"}"这样就不会有问题了。当然实际操作可能没有这么简单,稍微改一下应该是可以运行的。

Post by gouki on 2008, December 4, 12:06 AM 引用此文发表评论 #5

膘叔,你好!
    我最近在www.json.org下载的json.js文件准备把一个自定义javascript对象序列化成json格式,结果也出现你上面说的问题,具体如下:
    我用var strObj = Obj.toJSONString();
alert(strObj );时发现在IE下生成的json串闭花括号的前面没有逗号,而在FF中却有,应该时跟你说的问题一致,头疼。。。,这个串提交到服务端asp页面解析时只认IE生成的串,FF生成的串被认为是错的,不知何解?请赐教!感激。。。

Post by 影子 on 2008, December 3, 4:47 PM 引用此文发表评论 #6


发表评论

评论内容 (必填):