0

我提出这个是为了节省人们的时间。

我正在使用 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 语句)。

我又改回来了,它继续工作,所以显然有一些编译依赖。

4

1 回答 1

0

我最终将其追踪到 MVC 缩小过程,要么缓存要么从 jQuery 脚本中剥离一些东西。但前提是脚本首先是 .min 版本。

于 2015-07-19T21:26:59.417 回答