Jquery 2.1.1在IE9中出现错误:0x800a01b6 - Microsoft JScript运行时错误:对象不支持属性或方法'addEventListener'。

7

我使用Visual Studio 2013将一个混合Asp.Net Webforms/MVC 3网站应用程序迁移到了Asp.Net Webforms/MVC 5.1。在迁移过程中,我使用NuGet包管理器将Jquery从1.9.1升级到2.1.1。

在Chrome浏览器中,在Visual Studio 2013调试器中运行该应用程序时,没有问题。

但是,在IE 9中(兼容模式未开启)使用Visual Studio 2013调试器运行应用程序时,首先加载了一个包含两个脚本标记的主页面:

<script src="/Scripts/jquery-2.1.1.js" type="text/javascript"></script>
<script src="/Scripts/jquery-ui-1.10.4.js" type="text/javascript"></script>

它出现了这个JavaScript错误:

Unhandled exception at line 3425, column 4 in http://localhost:25378/Scripts/jquery-2.1.1.js 
0x800a01b6 - Microsoft JScript runtime error: Object doesn't support property or method 'addEventListener'

我知道Jquery 2不支持IE 8及以下版本,但是我没有找到任何文档提到在IE 9上会出现问题。

错误发生在jquery-2.1.1.js的第3425行,jQuery.ready.promise函数内部:

document.addEventListener( "DOMContentLoaded", completed, false );

奇怪的是,当我停在错误处时,在调试器中检查文档对象并展开“方法”节点,我可以看到“addEventListener”方法。似乎Jquery没有权限看到该方法。

我非常希望升级到Jquery 2,根据我所读的所有内容,Jquery 2应该与IE9兼容。有关修复此问题的任何建议吗?


jQuery 2.1的API与jQuery 1.11完全相同,唯一的优势是文件大小。尝试切换到1.11.1版本。 - Blazemonger
我意识到了。我想转换到Jquery 2,正是因为文件大小更小。我想知道为什么它在我的IE9中失败了。根据我所读的所有内容,它应该在IE9中正常工作。 - Tom Regan
你是否定义了文档类型?你尝试过使用HTML5的 <!DOCTYPE html>吗? - wirey00
2
尝试在开头的 head 标签后面添加 <meta http-equiv="X-UA-Compatible" content="IE=edge"> - wirey00
1
检查您的兼容性模式,如果您正在运行浏览器的兼容性模式,那么它基本上就相当于运行旧版本的IE,因此新的jQuery将无法工作。上面的建议将强制IE不使用兼容性模式。 - QBM5
显示剩余2条评论
4个回答

9
感谢 ᾠῗᵲᄐᶌ 和 QBM5 的留言。在这种情况下,答案是删除


<meta http-equiv="X-UA-Compatible" content="IE=8">

从主页面头部开始,因为它将浏览器置于IE 8兼容模式下,而IE 8与JQuery 2不兼容。


8
我在使用VS2013 Ultimate创建全新的Web应用程序时遇到了同样的错误。原来是IE11以兼容模式运行 - 关闭该模式即可消除错误。

1
您可以在Web配置文件中添加以下代码来设置文档模式:
<system.webServer>
  <httpProtocol>
    <customHeaders>
     <add name="X-UA-Compatible" value="IE=EmulateIE9" />
    </customHeaders>
 </httpProtocol>
</system.webServer>

1

我在使用JQuery时在IE8中遇到了类似的异常,但我找到了解决方案。

<head id="Head1" runat="server"> 
    <!--[if lt IE 9]>
        <script src="/js/trirand/jquery-1.11.1.min.js" type="text/javascript"></script> 
    <![endif]-->

    <!--[if gt IE 8]>
        <script src="/js/trirand/jquery-2.1.1.min.js" type="text/javascript"></script> 
        <![endif]-->
</head>

如果需要,您可以更改版本。

从代码中看:IE8及更早版本支持jQuery1X版本

Jquery2x版本在IE9及更高版本中运行。

祝你好运


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接