IE8中最有可能导致Javascript错误的原因是什么?

时间:2008-12-11 16:13:39

标签: javascript internet-explorer internet-explorer-8

我在IE8中看到很多Javascript错误,这些错误在IE7(以及Firefox,Chrome和Safari)中运行良好。我知道IE对Javascript安全性等内容进行了一些更改。其中一些没有提供明确的错误消息 - 跨域违规等事情最终会引发非常模糊的异常。

当我们对IE8 Javascript错误进行排查时,让我们制作一份顶级违规者清单。请列出一个更改IE8 Javascript导致Javascript错误的方式。

4 个答案:

答案 0 :(得分:13)

我可以验证“unique_username”发布的内容是否正确!

(报价) 事实上,一大堆东西已经改变了。

首先,它真的很重要。在IE8中,有3种(三种)模式。

  • IE5怪癖 - 你的页面没有doctype,像IE5这样的页面渲染
  • IE 7标准模式 - 您有一个doctype,但要么选择退出IE8标准模式,要么运行在localhost上,或者是“兼容模式”
  • IE 8标准模式 - 您有一个doctype,并且位于INTRANET(默认模式)

现在,如果你在IE5 / IE7模式下渲染,那么除了会添加一些不应该干扰你的页面的方法之外,什么都没有改变。

但是,如果与大多数人一样,您正在使用doctype设置运行,因此在IE8标准模式下,发生了以下更改。

1.) document.getElementById( id ); //now only returns the CORRECT matches!

2。) .getElementsByName(name); //现在只返回CORRECT匹配! nope,不固定!

3.) .getAttribute( name ); //returns the CORRECT value for the given attribute!
4.) .setAttribute( name, value ); //actually SETS the name/value CORRECTLY (no more cAmElCaSe crud)!
5.) CSS Expressions are NO LONGER allowed (deprecated)
6.) Operation Aborted errors will still be thrown (in some cases) however the cases are fewer, and the error won't kill the entire page/DOM
7.) The attributes[] array on elements should (from the RC build onwards) be correct in terms of contents, have a length, etc.
8.) Button elements now submit the contents of the value attribute, NOT the HTML contents of the Button Tag

还有一堆CSS 2.1修复程序,因此之前变得怪异或者需要修复的东西应该要好得多。 (有关alpha /透明度的详细信息,请参见下文 - 已发生重大变化)

有关详细信息,请参阅IE Blog

另请参阅Web Bug Track以获取有关IE8(以及所有其他浏览器)的错误,修复程序的细粒度详细信息

SVG,圆角,基于ECMAScript的事件监听器,更好的表单元素设计/事件等仍然缺失。

PS如果您有特定问题,请告诉我们,我们将帮助您找到它们。 ; - )

更新

window.resize事件目前在IE8 Beta2和IE8合作伙伴版本1(不会触发)目前已在RTM版本中修复

window.open(); in IE8 Partner Release is sometimes failing "claiming" that the target url is not available (quirky, hard to reproduce)

答案 1 :(得分:11)

我发现这是一个非常有趣的(/ sarcasm off)。如果您的MIME类型为“application / javascript”,而不是“text / javascript”Internet Explorer将:

A)忽略意外的MIME类型并使用该文件?

B)根本没有加载文件?

C)获取文件的前一百行左右,将它们添加到HTML之前的另一个JS文件中,然后给出各种错误,因为你的乱序半文件+实际文件不起作用?

这是对的,答案是C ......我不是骗你的。我们曾经使用“application / javascript”MIME类型来防止IE6 / 7中的JS文件缓存,因此我浪费了一整天的时间来试图弄清楚为什么IE8会给出一些非常疯狂的错误。幸运的是,当我告诉我在500行文件的650行上有错误时(当我在调试器中查看文件时,我看到了前置的其他文件),我终于弄明白了发生了什么。

故事的道德:如果你想让IE8工作,请不要将“application / javascript”用于你的JS文件的MIME类型。

答案 2 :(得分:2)

我在这里找到了几个列表:http://social.msdn.microsoft.com/forums/en-US/iewebdevelopment/thread/772e4b07-29e1-4909-b77f-f61c503f9579/

我还没有验证这些,其中一些非常模糊。

答案 3 :(得分:1)

这个派对有点晚了,但在研究同一个问题时,我遇到了这篇MSDN文章,其中突出了IE 8的JScript引擎不支持的功能。