【问题标题】:ASP.NET: Combres causes '$ is undefined' when jQuery is compressedASP.NET:压缩 jQuery 时,Combres 导致“$ 未定义”
【发布时间】:2011-01-21 16:09:00
【问题描述】:

对于任何了解使用 Combres 的专业知识的人,这是为您准备的:

我的 Combres.XML 如下所示:

<?xml version="1.0" encoding="utf-8" ?>
<combres xmlns='urn:combres'>

  <filters>
    <filter type="Combres.Filters.FixUrlsInCssFilter, Combres" />
  </filters >
  <cssMinifiers>
    <minifier name="yui" type="Combres.Minifiers.YuiCssMinifier, Combres">
      <param name="CssCompressionType" type="string" value="StockYuiCompressor" />
      <param name="ColumnWidth" type="int" value="-1" />
    </minifier>
  </cssMinifiers>
  <jsMinifiers>
    <minifier name="yui" type="Combres.Minifiers.YuiJSMinifier, Combres">
      <param name="IsVerboseLogging" type="bool" value="false" />
      <param name="IsObfuscateJavascript" type="bool" value="true" />
      <param name="PreserveAllSemicolons" type="bool" value="false" />
      <param name="DisableOptimizations" type="bool" value="true" />
      <param name="LineBreakPosition" type="int" value="-1" />
    </minifier>
  </jsMinifiers>
  <resourceSets url="~/combres.axd" defaultDuration="30"
                                defaultVersion="auto"
                                defaultDebugEnabled="false"
                                defaultCssMinifierRef="off" 
                                defaultJSMinifierRef="off"> 
    <resourceSet name="siteCss" type="css" minifierRef="yui">
      <resource path="~/css/jquery-ui-1.7.2.custom.css"  />
      <resource path="~/css/OMNIv2.css" />
      <resource path="~/css/dataTable.css" />
    </resourceSet>
    <resourceSet name="siteJs" type="js" >
      <resource path="~/js/jquery-1.4.2.min.js" minifierRef="off" />
      <resource path="~/js/jquery.jstree.min.js" minifierRef="off" />
      <resource path="~/js/jquery.dataTables.min.js" minifierRef="off" />
      <resource path="~/js/jquery.cookie.min.js" minifierRef="off" />
      <resource path="~/js/jquery-ui-1.7.2.custom.min.js" minifierRef="off" />
      <resource path="~/js/jquery.collapsible-v.2.1.3.js" minifierRef="yui" />
      <resource path="~/js/jquery.fileupload.js" minifierRef="yui" />
      <resource path="~/js/original/OMNIv2.js" minifierRef="yui" />
    </resourceSet>
  </resourceSets>
</combres>

将 defaultDebugEnabled 设置为 false,即模块现在将开始运行...内联 Javascript 并且我的一个 ClientRegisterScriptBlocks 炸毁说“$ 未定义”。显然,jQuery 没有被加载或以某种方式被破坏。如果我真的在 defaultDebugEnabled 设置为 true 的情况下运行它,那么组合的 JS 运行良好并且所有引用都有效。有什么想法为什么会发生这种情况?日志没有显示任何异常。

输出:

//These are from the master page
<link rel="stylesheet" type="text/css" href="/combres.axd/siteCss/1/"/>
<script type="text/javascript" src="/combres.axd/siteJs/a/"></script>

// This is in my Default.aspx 
<script type="text/javascript" >
   function pageLoad() {
    var $NavSlider = $("#NavSlider"); // THIS DOESN'T WORK, $ is undefined
   }
</script>

【问题讨论】:

  • 你的输出 html 是什么样的?
  • 浏览器查看的 /combres.axd/siteJs/a/ 的内容是什么?
  • 不确定我知道如何抓住它...有什么建议吗?
  • 直接在您的网络浏览器中导航到它。
  • 是的,那没有用,但我确实通过 JSLint 运行了我的一个 JS 脚本,纠正了它,现在我只是得到 jQuery 没有定义。错误来自 jQuery UI 文件,在 jQuery.cookie 调用上,它位于要组合的脚本列表中。

标签: javascript asp.net jquery combres


【解决方案1】:

有趣的是,Combres 肯定有一些问题。一些 JQuery 源文件可以工作,而另一些则不能。它归结为在某些情况下它是如何被缩小的。 Combres 有一些错误需要解决 IMO。

【讨论】:

  • Combres 自身不执行压缩,它依赖于 Yui、AjaxMin 和 Closure 等工具。您是否尝试过切换缩小器,比如使用 AjaxMin 而不是 Yui?
【解决方案2】:

Combres 遇到问题,因为它正在尝试合并和缩小已经缩小的文件。尝试使用完整的、未压缩的 javascript 文件。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-07-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多