我提出这个是为了节省人们的时间。
我正在使用 jQuery 1.11.3,以及带有 ScriptBundle 的 MVC
在大页面上,我开始在 ready.promise 中调用 addEventListener 时遇到错误
有趣的是,给定 u = document; u.addEventListener = undefined 但查看 u 下的方法显示 addEventListener 相同 where u = window;
看jQuery源码,很明显
if ( document.readyState === "complete" ) {
// Handle it asynchronously to allow scripts the opportunity to delay ready
setTimeout( jQuery.ready );
// Standards-based browsers support DOMContentLoaded
} else if ( document.addEventListener ) {
// Use the handy event callback
document.addEventListener( "DOMContentLoaded", completed, false );
// A fallback to window.onload, that will always work
window.addEventListener( "load", completed, false );
// If IE event model is used
}
jQuery-1.11.3.min.js 是:
else if(y.addEventListener)y.addEventListener("DOMContentLoaded",J,!1),a.addEventListener("load",J,!1);else
所以我疯了,试图找出问题所在。
然后在 IE 调试器的 js 输出中我注意到:
else y.addEventListener("DOMContentLoaded",J,!1),a.addEventListener("load",J,!1);else
不存在对 addEventListener 的检查。
我将脚本包从 jquery-{version}.js 更改为 jquery.1.11.3.js 并且一切正常(并且存在 if 语句)。
我又改回来了,它继续工作,所以显然有一些编译依赖。