ASP.NET: Combres приводит к тому, что $ не определено при сжатии jQuery - PullRequest
3 голосов
/ 21 января 2011

Для тех, кто знает, как использовать 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>

Ответы [ 2 ]

2 голосов
/ 26 апреля 2011

Интересно, что у Combres должны быть проблемы.Некоторые исходные файлы JQuery будут работать, а другие нет.Это сводилось к тому, как это было уменьшено в некоторых случаях.У Combres есть некоторые ошибки, которые нужно решить IMO.

0 голосов
/ 31 мая 2012

Combres сталкивается с проблемами, потому что пытается объединить и минимизировать файлы, которые уже минимизированы. Попробуйте использовать полные не минимизированные файлы JavaScript.

...