5

estoy usando la escritura html5boilerplate acumulación y cuando minifying los guiones (que utiliza Google Closure Compiler)Internet Explorer, el compilador de cierre y posterior comas

estoy recibiendo este 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] 

      ^

Pero el código FUNCIONA en IE 8 si se ejecuta sin compilar.

Este es el código

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

¿Cómo puedo hacer que este código de Compulsure compilador?

Gracias

Respuesta

10

Eliminar lo superfluo última coma de su objeto 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. 

Como dice el compilador de cierre, los literales con tales comas finales no pueden ser analizados por algunos navegadores.

+0

Gasto tanto en este código que no pude verlo directamente en el forn de mis ojos. Todavía me parece extraño que el código funcione bien en IE 7,8,9, pero el compilador lo trata como un tipo de error fatal. Gracias Frédéric. – Juan

+1

Aquí hay un artículo que explica por qué: http://www.enterprisedojo.com/2010/12/19/beware-the-trailing-comma-of-death/. Puede convertir este error en una advertencia utilizando el indicador '--jscomp_warning internetExplorerChecks'. –

+0

Hubiera sido realmente agradable tener a JSHint y JSLint diciéndome esto, ya que acabo de perder todo el día en esto ... SMDH Gracias –

4

O habilite el modo EcmaScript 5. Ecmascript 5 estandariza el comportamiento de la coma final, pero IE8 no lo admite por completo ES5 (tampoco lo hace IE9 que no tiene el modo estricto).

Cuestiones relacionadas