首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >在为Internet Explorer编写javascript时,需要避免的常见错误是什么?

在为Internet Explorer编写javascript时,需要避免的常见错误是什么?
EN

Stack Overflow用户
提问于 2010-09-30 23:43:56
回答 7查看 1.5K关注 0票数 16

我即将开始编写一个新的、大量使用javascript的网站,但在开始之前,我想通过预先了解这些怪癖来最小化我在Internet Explorer中的调试时间。我不打算太担心IE6。

javascript代码中常见的错误/差异是什么,这些错误/差异在其他浏览器中工作良好,但在Internet Explorer中中断?

EN

回答 7

Stack Overflow用户

发布于 2010-10-01 19:35:00

IE (8和更低版本,不确定9)不能处理访问字符串中的字符,如数组,如:

代码语言:javascript
复制
var str = 'abc';
var c = str[2];
alert(c)

在大多数浏览器中,这将警告“c”,但IE警告“未定义”。出于跨浏览器的原因,我们应该使用charAt函数:

代码语言:javascript
复制
var str = 'abc';
var c = str.charAt(2);
alert(c)

这也会在IE中警告'c‘。

另一个小区别是对象和数组中的尾随逗号。这在大多数浏览器中都是有效的,但会在IE中引发错误:

代码语言:javascript
复制
ar = [1,2,3,]

而且还

ob = {name:'janet', surname:'walker',}

如果你没有意识到这一点,你可能会非常恼火。这两个问题可能是我经常遇到的问题,因为我习惯了python,但它仍然值得注意。

票数 7
EN

Stack Overflow用户

发布于 2010-10-01 01:32:40

使用+连接字符串

代码语言:javascript
复制
var str="";
for (var i = 0; i < max; ++i) {
  str += somefunction(i);
}

在MSIE上,这可能需要几分钟时间。我曾经做过一个测试,Opera a Firefox在几秒钟后就结束了,但MSIE在20分钟后还没有完成!

但是,如果使用数组,则MSIE速度很快:

代码语言:javascript
复制
var str = [];
for (var i = 0; i < max; ++i) {
   str.push( somefunction(i));
}
str = str.join("");

很抱歉,我现在找不到关于它的帖子。

票数 6
EN

Stack Overflow用户

发布于 2010-09-30 23:48:01

Internet Explorer。

更严肃地说,另一个答案中的尾随逗号答案是好的。使用框架可以有所帮助,但它不是一个包罗万象的工具。你将不得不处理跨浏览器的问题。因此,请确保在您关心的所有版本中进行测试。

票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/3832292

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档