2012-08-22 21 views
16

可能性の重複:私はClosure Compilerし、これら2個のエラー生成されたコードのコンパイルを使用して、私のjavascriptのコードを圧縮しようとした
Internet Explorer, Closure Compiler and Trailing Commas問題に関して、末尾のカンマ

JSC_TRAILING_COMMA:解析エラーです。 IE8(および以下)は、末尾の コンマを配列およびオブジェクトリテラルで正しく解析しません。新しいバージョンのJSを にターゲティングする場合は、適切なlanguage_inオプションを設定します。エラーを解析IE8(以下:

JSC_TRAILING_COMMA、( ""、[{1}/GI /]")を交換 jqTextareaDiv.css( "フォントファミリー")。線 379文字0のfontFamilyで。)が誤って 配列とオブジェクトリテラルでコンマを末尾に解析するあなたはJSの 新しいバージョンをターゲットにしている場合は、適切なlanguage_inオプションを設定する行 932文字0のfontFamilyで:。jqDiv.css(「フォントファミリ」)、

これらの2つのエラーは、このコードを参照しているようです:

var jqTextareaDiv = obj.target.parent().parent(), 
          style = {  // the current, relevant style rules for the DIV nesting the textarea 
           fontFamily  : jqTextareaDiv.css("font-family").replace(/["']{1}/gi,""), 
           fontSize  : jqTextareaDiv.css("font-size"), 
           fontStyle  : jqTextareaDiv.css("font-style"), 
           fontWeight  : jqTextareaDiv.css("font-weight"), 
           textDecoration : jqTextareaDiv.css("text-decoration"), 
           textAlign  : jqTextareaDiv.css("text-align"), 
           color   : jqTextareaDiv.css("color"), 
          }, 
          jqToolbox = $('#text-edit-toolbox'), 
          jqIndicators = { 
           fontFamily    : $('#font-family-indicator'), 
           fontSize     : $('#font-size-indicator'), 
           fontStyle     : $('#font-format-indicators .font-style'), 
           fontWeight    : $('#font-format-indicators .font-weight'), 
           textDecorationUnderline : $('#font-format-indicators .underline'), 
           textDecorationLineThrough : $('#font-format-indicators .line-through'), 
           textAlignLeft    : $('#text-alignment-indicators .align-left'), 
           textAlignCenter   : $('#text-alignment-indicators .align-center'), 
           textAlignRight   : $('#text-alignment-indicators .align-right'), 
           textAlignJustify   : $('#text-alignment-indicators .align-justify') 
          }; 

この場合の末尾のカンマは正確です。コードを壊さずに削除するにはどうすればよいですか?

+6

まあ、末尾のカンマは...末尾のものです。 )それらは宣言された配列/オブジェクトの最後の要素に従います。 'color:jqTextareaDiv.css(" color ")、'私はあなたの例で見つけたものです。他にもあるかもしれません。実際、その場所はエラーメッセージで与えられました。それらを修正するには、誤った文字列のカンマを削除するだけです。 – raina77ow

+1

正規表現のように見えますが、エスケープ記号がエスケープされていると問題が発生する可能性があります。 –

+0

また、それらを削除する理由もあります。後続するコンマはIE8-でうまくいかない。これらの獣をサポートする必要がない場合は、それに応じて 'language_in'オプションを設定してください。 – raina77ow

答えて

32

末尾のコンマは、最終的な素子のアレイまたはオブジェクトリテラルに続くカンマです。したがって、このように:この場合

['a', 'b', 'c',] // with trailing comma 
['a', 'b', 'c'] // without trailing comma 

、末尾のカンマは、オブジェクトリテラルの最後の要素を、次のとおりです。

color   : jqTextareaDiv.css("color"), 

あなたはそれを削除した場合、予想される動作が発生します。そこに、IE < 9はそれを好まないでしょう。

+0

これを見つけて修正しましたが、.replace()メソッド呼び出しで同じ行にあると思われる最初のものを見つけることができません –

+0

@AndreiOnigaまあ、そこには何も問題はありません。私の推測では、クロージャコンパイラは正規表現で '' 'と混同されています。コンパイラに手を与えるために' \ "'エスケープしてみてください... – lonesomeday

+0

実際はそうではありませんでした。私はちょうど "色\t \tの後に気づかなかった:jqTextareaDiv.css(" color ")"、ちょうど第2のもの。私の悪い。ありがとう! –

2

color : jqTextareaDiv.css("color"),の末尾にカンマがあります。それが最初の警告でしょう。 2番目の警告は、おそらくコード内の他の場所と同様の定義です。

3

これは後続カンマである:

color   : jqTextareaDiv.css("color"), <<-- 
関連する問題