ScriptBundle和jQuery缩小会导致addEventListener

时间:2015-06-25 21:56:07

标签: javascript jquery asp.net-mvc bundling-and-minification scriptbundle

我这样做可以节省人们的时间。

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

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

有趣的是,给定u =文件; u.addEventListener =未定义 但是看看你下面的方法,可以看到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的检查不存在。

我将脚本包从jquery- {version} .js更改为jquery.1.11.3.js,一切正常(并且if语句存在)。

我又把它改回来了,它继续工作,显然有一些依赖于编译的东西。

1 个答案:

答案 0 :(得分:0)

我最终跟踪了MVC缩小过程,要么缓存或从jQuery脚本中删除一些东西。但是,如果脚本首先是.min版本。