ScriptBundle和jQuery缩小会导致addEventListener出现问题



我把它作为一种节省人们时间的方式。

我使用的是jQuery 1.11.3,以及带有ScriptBundle 的MVC

在大页面上,我开始在ready.promise 中调用addEventListener时出错

有趣的是,给定u=文档;u.addEventListener=未定义但是查看u下的Methods显示addEventListener相同,其中u=窗口;

从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的检查不存在。

我将Script Bundle从jquery-{version}.js更改为jquery.1.11.3.js,一切正常(if语句也存在)。

我又把它改回来了,它继续工作,所以很明显有一些依赖于编译的东西在进行。

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

最新更新