2012-08-22 7 views
16

Mögliche Duplizieren:
Internet Explorer, Closure Compiler and Trailing CommasProblem in Bezug auf Hinter Komma in JavaScript

Ich habe versucht, mein Javascript-Code Komprimieren der Closure Compiler und die Kompilierung des Codes erzeugt diese zwei Fehler mit:

JSC_TRAILING_COMMA: Parse Fehler. IE8 (und darunter) wird nachfolgende Kommas in Array- und Objektliteralen falsch analysieren. Wenn Sie auf neuere Versionen von JS abzielen, legen Sie die entsprechende Option language_in fest. in Zeile 379 Zeichen 0 fontfamily:. jqTextareaDiv.css ("font-family") ersetzen (/ [ " '] {1}/gi, ""),

JSC_TRAILING_COMMA. Einlesefehler IE8 (und nachstehend .) analysieren wird falsch Kommas in Array und Objektliterale Hinter Wenn Sie neuere Versionen von JS zielen, stellen Sie die entsprechende Option language_in in Zeile 932 Zeichen 0 family. jqDiv.css („font-family“),

diese zwei Fehlern durchsuchen scheinen auf diesen Code zu verweisen:

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') 
          }; 

Genau das ist das abschließende Komma in diesem Fall und wie kann ich es entfernen, ohne den Code zu brechen?

+6

Nun, die abschließenden Kommas sind ... die nachfolgenden.) Sie folgen dem letzten Element des deklarierten Array/Objekts. 'Farbe: jqTextareaDiv.css (" Farbe "),' ist die eine, die ich in Ihrem Beispiel gefunden habe, möglicherweise gibt es andere. In der Tat wurde ihre Position durch eine Fehlermeldung angegeben; Um sie zu beheben, entfernen Sie einfach die Kommas in der fehlerhaften Zeichenfolge. – raina77ow

+1

Sieht auch aus wie Ihre Regex, mit seinen unausgeglichenen Anführungszeichen, verursacht möglicherweise ein Problem –

+0

Und der Grund für sie entfernt werden auch gegeben: Nachkommas nicht gut mit IE8- gehen. Wenn Sie diese Biester nicht unterstützen müssen, legen Sie einfach die Option 'language_in' fest. – raina77ow

Antwort

32

Ein Komma ist ein Komma, das das letzte Element in einem Array oder Objektliteral folgt. So wie folgt aus:

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

In diesem Fall folgt das Komma das letzte Element in Ihrem Objektliteral:

color   : jqTextareaDiv.css("color"), 

Wenn Sie es entfernen, wird das erwartete Verhalten auftreten. Mit ihm dort, IE < 9 wird es nicht mögen.

+0

Ich habe das gefunden und korrigiert, kann aber nicht das erste finden, das ist (angeblich) in der gleichen Zeile wie die Methode .replace() –

+0

@AndreiOniga Nun, da ist nichts falsch. Meine Vermutung ist, dass der Closing-Compiler mit dem '' 'in der Regex verwechselt wird - versuchen Sie es zu umgehen' '', um dem Compiler eine Hand zu geben ... – lonesomeday

+0

Eigentlich war es das nicht. Ich habe einfach nicht die nach "Farbe \t \t: jqTextareaDiv.css (" Farbe ")" bemerkt, nur die zweite. Mein Fehler. Vielen Dank! –

2

Sie haben ein abschließendes Komma in color : jqTextareaDiv.css("color"),. Das wäre die erste Warnung. Die zweite Warnung ist wahrscheinlich eine ähnliche Definition irgendwo anders in Ihrem Code.

3

Dies ist das Komma:

color   : jqTextareaDiv.css("color"), <<--