Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Internet Explorer, Closure Compiler and Trailing Commas

I'm using html5boilerplate build script and when minifying the scripts (which uses Google Closure Compiler)

I'm getting this error

-js.all.minify:
     [echo] Minifying scripts
     [copy] Copying 3 files to /Users/Username/Desktop/Web/intermediate/js
    [apply] /Users/Juan/Desktop/Web/js/plugins.js:117: ERROR - Parse error. Internet Explorer has a non-standard intepretation of trailing commas. Arrays will have the wrong length and objects will not parse at all.
    [apply]                 }, { duration: 727 })
    [apply] 

             ^

But the code DOES work in IE 8 if run uncompiled.

This is the code

anim1.animate({
                    'left': '+=32px',
                    'filter': 'alpha(opacity=100)',
                    '-moz-opacity': '1',
                    '-khtml-opacity': '1',
                    'opacity': '1',
                }, { duration: 727 })

How can I make this code pass Compulsure Compiler?

Thanks

like image 445
Juan Ignacio Avatar asked Aug 06 '12 05:08

Juan Ignacio


2 Answers

Remove the superfluous last comma from your object literal:

anim1.animate({
    'left': '+=32px',
    'filter': 'alpha(opacity=100)',
    '-moz-opacity': '1',
    '-khtml-opacity': '1',
    'opacity': '1'      // <-- No comma here.
}, { duration: 727 });  // <-- I'd also suggest a semicolon there.

As the Closure compiler says, literals with such trailing commas cannot be parsed by some browsers.

like image 80
Frédéric Hamidi Avatar answered Nov 02 '22 23:11

Frédéric Hamidi


Or enable EcmaScript 5 mode. Ecmascript 5 does standardize the trailing comma behavior but IE8 does not fully support it ES5 (neither does IE9 which is missing strict mode).

like image 28
John Avatar answered Nov 02 '22 23:11

John