20

我在 IE7(以及 Firefox、Chrome 和 Safari)中运行良好的页面上看到了 IE8 中的许多 Javascript 错误。我知道 IE 对 Javascript 安全性等内容进行了一些更改。其中一些没有给出明确的错误消息——诸如跨域违规之类的事情最终可能会引发非常模糊的异常。

当我们对 IE8 Javascript 错误进行故障排除时,让我们列出最严重的问题。请列出一项对 IE8 Javascript 方式的更改会导致 Javascript 错误。

4

4 回答 4

13

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

(引用)实际上很多东西已经改变了。

首先,您所处的模式非常重要。在 IE8 中,有 3(三种)模式。

  • IE5 Quirks - 你的页面没有文档类型,页面呈现像 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( 名称 ); //现在只返回正确的匹配!不,不固定!

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 修复,所以之前呈现怪异或需要 hack 的东西应该会好得多。(有关 alpha/透明度的详细信息,请参见下文 - 发生了很大变化)

有关详细信息,请参阅IE 博客

另请参阅Web Bug Track以获取有关 IE8(和所有其他浏览器)的错误、修复的详细信息

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

PS 如果您有具体问题,请告诉我们,我们会帮助您解决问题。;-)

更新:

window.resize 事件目前在 IE8 Beta2 和 IE8 Partner Release 1 中被破坏(不会触发)现在在 RTM 构建中修复

window.open(); in IE8 Partner Release is sometimes failing "claiming" that the target url is not available (quirky, hard to reproduce)
于 2008-12-12T15:33:19.717 回答
11

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

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

B)根本不加载文件?

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

没错,答案是C……我不骗你。我们曾经使用“application/javascript” MIME 类型来防止 IE6/7 中的 JS 文件缓存,结果我浪费了一整天的时间试图弄清楚为什么 IE8 会给出一些非常疯狂的错误。幸运的是,当它告诉我在 500 行文件的第 650 行出现错误时,我终于弄清楚发生了什么(然后当我在调试器中查看该文件时,我看到了附加的其他文件)。

故事的寓意:如果您希望 IE8 工作,请不要将“应用程序/javascript”用于您的 JS 文件的 MIME 类型。

于 2009-04-01T00:27:30.593 回答
2

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

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

于 2008-12-11T16:31:23.103 回答
1

这个聚会有点晚了,但在研究同样的问题时,我遇到了这篇MSDN文章,它强调了 IE 8 的 JScript 引擎不支持的功能。

于 2012-09-04T19:46:59.350 回答