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

IE8中Javascript错误最可能的原因是什么?,javascript,internet-explorer,internet-explorer-8,Javascript,Internet Explorer,Internet Explorer 8,在IE7(以及Firefox、Chrome和Safari)中运行良好的页面上,我看到IE8中有很多Javascript错误。我知道IE对Javascript安全性做了一些更改。其中一些并没有给出明确的错误消息,比如跨域违规,最终会抛出非常模糊的异常 当我们对IE8 Javascript错误进行故障排除时,让我们制作一份顶级违规者清单。请列出一个会导致Javascript错误的IE8 Javascript更改。我在这里找到了一些列表: 我还没有验证这些,其中一些非常模糊。我可以验证“unique\

在IE7(以及Firefox、Chrome和Safari)中运行良好的页面上,我看到IE8中有很多Javascript错误。我知道IE对Javascript安全性做了一些更改。其中一些并没有给出明确的错误消息,比如跨域违规,最终会抛出非常模糊的异常


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

我在这里找到了一些列表:


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

我可以验证“unique\u username”发布的内容是否准确

(引述) 事实上很多东西都变了

首先,你处于什么模式真的很重要。在IE8中,有3(三)种模式

  • IE5怪癖-您的页面没有doctype,页面呈现方式与IE5相同
  • IE7标准模式-您有一个doctype,但要么选择退出IE8标准模式,要么在本地主机上运行,要么在“兼容模式”下运行
  • IE 8标准模式-您有一个doctype,并且位于内部网上(默认模式)
现在,如果您是在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的修复,所以以前出现奇怪的东西,或者需要破解的东西,应该会好得多。(有关alpha/透明度的详细信息,请参见下文-已经有了很大的变化)

有关详细信息,请参阅

有关错误的详细信息,请参阅,IE8(和所有其他浏览器)的修复程序

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

PS如果您有具体问题,请告诉我们,我们将帮助您找到这些问题。;-)

更新:

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

window.open(); in IE8 Partner Release is sometimes failing "claiming" that the target url is not available (quirky, hard to reproduce)
我发现了一个非常有趣的例子。如果您的MIME类型为“application/javascript”,而不是“text/javascript”,Internet Explorer将:

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

B) 根本不加载文件

C) 取文件的前100行左右,将它们预先添加到HTML中它前面的另一个JS文件中,然后给你各种各样的错误,因为你的无序的半个文件+实际的文件不能工作

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


故事的寓意:如果你想让IE8工作,不要使用“application/javascript”对于你的JS文件的MIME类型。

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

结果表明,仅仅更改HTTP响应头的MIME类型是不够的;最终,我不得不完全放弃我们的Javascript servlet,因为Apache静态提供的JS文件在IE8中工作得很好(我不想浪费更多的时间修复servlet的头)。我想我快疯了!!!这不是“标准”吗???应用程序/javascript刚刚用IE 8破坏了我的跨站点JSONP。。。谢谢这似乎对IE9也是如此。