Internet Explorer, закрывающий компилятор и запятые
Я использую скрипт сборки html5boilerplate и при минимизации скриптов (который использует Google Closure Compiler)
Я получаю эту ошибку
-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]
^
Но код работает в IE 8, если выполняется без компиляции.
Это код
anim1.animate({
'left': '+=32px',
'filter': 'alpha(opacity=100)',
'-moz-opacity': '1',
'-khtml-opacity': '1',
'opacity': '1',
}, { duration: 727 })
Как сделать так, чтобы этот код проходил Compulsure Compiler?
Спасибо
2 ответа
Решение
Удалите лишнюю последнюю запятую из литерала вашего объекта:
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.
Как говорит компилятор Closure, некоторые браузеры не могут анализировать литералы с такими запятыми.
Или включите режим EcmaScript 5. Ecmascript 5 стандартизирует поведение запятой в конце, но IE8 не полностью поддерживает его ES5 (равно как и IE9, в котором отсутствует строгий режим).