最近在写一个JS程序,遇到这样一个问题,请看代码:
var myobject = {};
myobject.delete = function()
{
alert ("call delete");
};
myobject.delete();
这段代码从思想上没有任何问题,定义1个对象myobject,并且给它一个删除的方法名为delete,最后调用delete方法。这段代码在Firefox下能正常运行,但在IE下却报语法错误。原因相信大家也发现了,IE把delete看成是关键字了,而Firefox会把delete看成是myobject对象里的一个方法。所以,把delete方法改名字就对了,以后尽量不要用JS关键字做方法名,如new,delete等
因此,如果您在写JS程序时,遇到Firefox正常,但IE报语法错误,通常情况下,都是您使用了delete或者new关键字定义了方法名,您可以从这方面下手debug。
最后聊点题外话,介绍一下JS在Firefox以及IE下的调试工具。Firefox下就不说了,有大名鼎鼎的
Firebug,这款工具不仅查看DOM结构,JS错误信息等,最重要的它能够监视网络的数据。IE下的调试工具也不少,微软的IE Developer Toolbar和Firebug挺类似的,只是它没有监视网络数据的功能,这对调试Ajax代码比较不好。调试JS的工具我觉得最好的是Companion JS,我觉得它是IE下最好的JS调试工具,它能够准确定位到出错的JS代码,而且它是免费的。如果没有Companion,我可能需要更多的时间才能找到罪魁祸首delete的。另外,Firebug也有IE版的,不过IE版的Firebug是完全用JS写的,处理速度十分缓慢,特别是分析DOM树、分析CSS等,速度奇慢,缺少实用性,而且Firebug for IE不能检测网络数据。
Ferris
2008-09-02