jquery 1.9.0和modernizr不能与ASP.NET Web优化框架缩小

前端之家收集整理的这篇文章主要介绍了jquery 1.9.0和modernizr不能与ASP.NET Web优化框架缩小前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我们使用ASP.NET Web优化框架与捆绑和缩小。
一个包只包含jquery和modernizr。这一切工作正常与jquery 1.8.3但是,因为我们更新到1.9.0组合jquery / modernizer包不工作了。
bundles.Add(new ScriptBundle("~/st-scripts-load-first.js")
       .Include("~/Resources/JavaScript/jquery-1.9.0.js","~/Resources/JavaScript/modernizr.form-placeholder.js"));

我们在目录中有jquery-1.9.0.js和jquery-1.9.0.min.js。如果没有.min文件,优化框架将自动生成一个。如果.min文件存在或不存在,它不工作。
它的工作原理如果编译debug =“true”,没有缩小或捆绑。

/* Minification Failed. Returning unminified contents.
(5,2-3): run-time warning JS1195: Expected expression: *
(11,60-61): run-time warning JS1004: Expected ';': {
(395,2-3): run-time warning JS1195: Expected expression: )
(397,21-22): run-time warning JS1004: Expected ';': {
(397,4590-4591): run-time warning JS1195: Expected expression: )
(398,28-29): run-time warning JS1195: Expected expression: )
(398,84-85): run-time warning JS1002: Syntax error: }
(402,44-45): run-time warning JS1195: Expected expression: )
(408,1-2): run-time warning JS1002: Syntax error: }
(393,5-22): run-time warning JS1018: 'return' statement outside of function: return Modernizr;
(404,5,406,16): run-time warning JS1018: 'return' statement outside of function: return !!('placeholder' in (Modernizr.input || document.createElement('input')) &&
               'placeholder' in (Modernizr.textarea || document.createElement('textarea'))
             );
 */

解决方法

我确信你的问题的原因是jquery-1.9.0.min.js的最后一行:
//@ sourceMappingURL=jquery.min.map

jQuery 1.9的unminified版本不包含这个。我会解释为什么在一分钟。

我注意到自己,当jquery-1.9.0.min.js与另一个文件绑定 – 那个其他文件跟随jquery-1.9.0.min.js – 然后下面的JS文件,在一种说法,损坏。

原因是,以下文件的开头被追加到jQuery的“// @”行,这意味着它将成为一个长的扩展注释。在你的情况下,这意味着

window.Modernizr=function(n,t,i){function...

脚本在Modernizr的开始是作为一个注释从捆绑过程输出如此:

//@ sourceMappingURL=jquery.min.map window.Modernizr=function(n,i){function...

有一个discussion on jQuery’s Bug Tracker这个。

您的选项是删除最后一行或将其包装在多行注释符号中:

/*
//@ sourceMappingURL=jquery.min.map
*/

此外,您可以看到Modernizr在其缩小版本的末尾还包含源映射。有很好的理由。

其基本原理是帮助您在使用缩小版本的代码时调试问题。这行告诉浏览器这个缩小的文件映射到另一个文件,可以帮助调试。要利用这一点,您需要在服务器上或者下载到客户端具有引用的文件(jquery.min.map)。此外,我相信Chrome是目前唯一支持功能的浏览器;它仍然在Firefox的开发。

This page有一个很好的解释源地图。

所以总的来说,删除它不应该真正导致任何问题,除非你想映射回源的原始版本,同时在浏览器中调试。在你的情况下,由于ASP.NET的优化框架的工作方式,当debug =“True”它将提供未分类的版本,所以你可能不需要使用sourceMappingURL。

原文链接:https://www.f2er.com/jquery/184385.html

猜你在找的jQuery相关文章