5

html5boilerplateビルドスクリプトを使用していて、スクリプトを縮小するとき(Google ClosureCompilerを使用)

このエラーが発生します

-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] 

             ^

ただし、コンパイルせずに実行した場合、コードはIE8で機能します。

これはコードです

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

このコードをCompulsureCompilerに渡すにはどうすればよいですか?

ありがとう

4

2 に答える 2

10

オブジェクトリテラルから余分な最後のコンマを削除します。

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コンパイラが言うように、このような末尾のコンマを含むリテラルは、一部のブラウザでは解析できません。

于 2012-08-06T06:03:49.550 に答える
4

または、EcmaScript5モードを有効にします。Ecmascript 5は末尾のコンマの動作を標準化しますが、IE8はES5を完全にはサポートしていません(厳密なモードがないIE9もサポートしていません)。

于 2012-08-06T18:01:37.693 に答える