7

使用 Visual Studio 2013,我将混合 Asp.Net Webforms/MVC 3 Web 应用程序迁移到 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.ready.promise 函数内 jquery-2.1.1.js 的第 3425 行:

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

奇怪的是,当我停在错误处时,检查调试器中的文档对象并展开“方法”节点,我可以看到“addEventListener”方法。就好像 Jquery 无权查看该方法一样。

我非常想升级到 Jquery 2,从我读过的所有内容来看,Jquery 2 应该可以与 IE9 一起使用。有关解决此问题的任何建议?

4

4 回答 4

9

谢谢ᾠῗᵲᄐᶌ 和 QBM5 的评论,在这种情况下的答案是删除

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

从母版页头看,因为它把浏览器置于 IE 8 兼容模式,而 IE 8 不兼容 JQuery 2。

于 2014-07-02T19:23:02.107 回答
8

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

于 2014-10-01T20:22:31.380 回答
1

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

<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 和更高版本中工作。

祝你好运

于 2014-10-02T20:46:05.177 回答
1

您可以在 Web 配置文件中添加以下代码以设置文档模式:

<system.webServer>
  <httpProtocol>
    <customHeaders>
     <add name="X-UA-Compatible" value="IE=EmulateIE9" />
    </customHeaders>
 </httpProtocol>
</system.webServer>
于 2015-04-20T12:01:01.617 回答