试图理解为什么元兼容性标记解决了jQuery错误

前端之家收集整理的这篇文章主要介绍了试图理解为什么元兼容性标记解决了jQuery错误前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。

我正在寻找一个解释,为什么一个特定的修复工作,所以我可以更好地理解正在发生的机制.

我有一个ASP.NET MVC 5应用程序; “一切都工作得很好”(TM),直到我允许NuGet更新jQuery包.

然后,当我尝试在IE 10中运行webapp时,我开始收到错误消息/异常:

Unhandled exception at line 3398,column 4 in http://localhost:53242/Scripts/jquery-2.1.0.js

0x800a01b6 - JavaScript runtime error: Object doesn't support property or method 'addEventListener'

Unhandled exception at line 7,column 38 in http://localhost:53242/Scripts/bootstrap.js

0x800a139e - JavaScript runtime error: Bootstrap requires jQuery

我无法使用Firefox和Chrome重新创建.当我在这些浏览器中打开页面时,Firefox 27和Chrome 31都没有抛出这些错误.

这是jquery-2.1.0.js的相关部分

jQuery.ready.promise = function( obj ) {
    if ( !readyList ) {

        readyList = jQuery.Deferred();

        // Catch cases where $(document).ready() is called after the browser event has already occurred.
        // we once tried to use readyState "interactive" here,but it caused issues like the one
        // discovered by ChrisS here: http://bugs.jquery.com/ticket/12282#comment:15
        if ( document.readyState === "complete" ) {
            // Handle it asynchronously to allow scripts the opportunity to delay ready
            setTimeout( jQuery.ready );

        } else {

            // Use the handy event callback
            document.addEventListener( "DOMContentLoaded",completed,false );  //This is line 3398

            // A fallback to window.onload,that will always work
            window.addEventListener( "load",false );
        }
    }
    return readyList.promise( obj );
};

我找到的修复是添加此行

<Meta http-equiv="X-UA-Compatible" content="IE=edge;chrome=1" />

到< head>我的_LayoutBootstrap.cshtml文件.

我的问题:

为什么将元标记添加到文档的头部可以解决我看到的错误

给出的解释是标签“强制IE使用它可以使用的最佳模式”.假设这是正确的,这是什么意思,为什么IE没有能够找出没有该标签的正确行为?

full detail here中描述的问题以及在不受支持的IE 8中具有相同问题的另一个人.如果您感到好奇,重新创建的步骤大约包含在帖子的2/3之内.

最佳答案
解决了您的问题,因为通过添加兼容性标志,您将强制浏览器进入最新版本,而不是允许它选择兼容模式(这是IE7模式,jquery 2.x不支持)

IE默认为兼容模式,具体取决于您在浏览器中设置的设置.例如,默认情况下,Intranet站点(本地网站)将以兼容模式自动打开.

当使用旧版本的IE(IE< 10)时,您应该使用条件注释来包含1.1x版本的jquery,这将完全避免此问题,允许您的用户使用他们想要的任何浏览器而无需修改他们的设置正确使用您的申请.

猜你在找的HTML相关文章