2013-01-15 48 views
0

我的JavaScript的以下块:YUI压缩机抛出JavaScript错误,使用.NET端口

(它本质上是jquery.caret库)

(function($,len,createRange,duplicate){ 
    $.fn.caret=function(options,opt2){ 
     var start,end,t=this[0],browser=$.browser.msie; 
     if(typeof options==="object" && typeof options.start==="number" && typeof options.end==="number") { 
      start=options.start; 
      end=options.end; 
     } else if(typeof options==="number" && typeof opt2==="number"){ 
      start=options; 
      end=opt2; 
     } else if(typeof options==="string"){ 
      if((start=t.value.indexOf(options))>-1) end=start+options[len]; 
      else start=null; 
     } else if(Object.prototype.toString.call(options)==="[object RegExp]"){ 
      var re=options.exec(t.value); 
      if(re != null) { 
       start=re.index; 
       end=start+re[0][len]; 
      } 
     } 
     if(typeof start!="undefined"){ 
      if(browser){ 
       var selRange = this[0].createTextRange(); 
       selRange.collapse(true); 
       selRange.moveStart('character', start); 
       selRange.moveEnd('character', end-start); 
       selRange.select(); 
      } else { 
       this[0].selectionStart=start; 
       this[0].selectionEnd=end; 
      } 
      this[0].focus(); 
      return this 
     } else { 
      // Modification as suggested by Андрей Юткин 
      if(browser){ 
       var selection=document.selection; 
       if (this[0].tagName.toLowerCase() != "textarea") { 
        var val = this.val(), 
        range = selection[createRange]()[duplicate](); 
        range.moveEnd("character", val[len]); 
        var s = (range.text == "" ? val[len]:val.lastIndexOf(range.text)); 
        range = selection[createRange]()[duplicate](); 
        range.moveStart("character", -val[len]); 
        var e = range.text[len]; 
       } else { 
        var range = selection[createRange](), 
        stored_range = range[duplicate](); 
        stored_range.moveToElementText(this[0]); 
        stored_range.setEndPoint('EndToEnd', range); 
        var s = stored_range.text[len] - range.text[len], 
        e = s + range.text[len] 
       } 
      // End of Modification 
      } else { 
       var s=t.selectionStart, 
        e=t.selectionEnd; 
      } 
      var te=t.value.substring(s,e); 
      return {start:s,end:e,text:te,replace:function(st){ 
       return t.value.substring(0,s)+st+t.value.substring(e,t.value[len]) 
      }} 
     } 
    } 
}(jQuery,"length","createRange","duplicate"); 

但是,如果我通过YUI压缩机运行,它不起作用。它抛出第1行

我以前http://compressorrater.thruhere.net/测试这个错误....

使用www.jslint.com我可以看到它在说有一个不安全的字符行1,字符0

我不知道如何解决这个.... 理想情况下,我仍然想使用YUI压缩机,有一个很好的.NET端口,它

回答