随便javascript 第5版的书出来,JS的写法也就越来越多了,以前定义一个对象,还得写var o = new Object();现在好了,直接var o = {};
可是这样带来的问题不少(其实是IE和FF的兼容性问题)
下面是一个朋友痛苦的经历:
最近把YUI()引入到了现在做的项目当中,感觉做ajax非常顺手
由于firefox下有firebug这个插件,所以开发的时候都是以ie为准
稍微在ie下做些测试,一般都没有问题。
这次被一个逗号搞得非常辛苦。
var send_email_callback =
{
success:handleSuccess,
failure:handleFailure,
};
这段代码在firefox和ie下都不会报错
firefox运行正常,ie下导致整个脚本失效
调试都是用alert来调试,但是ie下alert的功能也失效了,无论alert放在文件的那个位置,都不会有弹框出来
整个js文件代码长达300行,找的好辛苦。。。
正确的应为: var send_email_callback =
{
success:handleSuccess,
failure:handleFailure
}; 唉,一个逗号引发的辛苦啊。。
这个错误应该是受到php里面array写法的影响
经常在定义array时为了给array添加新值方便,一般都是会再加一个逗号。。。
另外,还有个地方也会导致脚本在ie下失效
_div_sending.className = 'mail_sending';
//_div_sending.class = 'mail_sending';
其中第二行会导致脚本不能运行,也不会报错,同样无论什么地方放一个alert都不会有反应
额,以前看一本书上说,给控件加class的值,这样好像会做到多个浏览器兼容。。。faint,或许是我记错了吧。。
解决的办法,注释掉,或者用yui自带的添加的class的方法
这段代码是几个星期前写的,那个时候还没有看到yui给控件加class的方法
YAHOO.util.Dom.addClass(_div_sending, 'mail_sending');
希望有人可以告诉我,ie下调试js简单的方法
额,我的js的水平也太臭了。。。额。。。。
确实,在"}"前的最后一个","非常害人。在IE下死活会报错,而且FF下面又完全正常。现在我一看报错,就立马检查是否多了这个",",PHP的ARRAY习惯害人啊……总是担心可能会往配置数组里加东西,所以,每行最后都习惯性的加上逗号,现在……不太敢了。

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