我正在寻找一个解释,为什么一个特定的修复工作,所以我可以更好地理解正在发生的机制.
我有一个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之内.
最佳答案