1

JavaScript オブジェクト リテラルの末尾のコンマは、IE7 では有効な JavaScript 構文として受け入れられません。

var a = {
  foo: 12,
  bar: 13,//this is ok in all browsers except ie7
};

今のところ、この問題に対処する方法は、IE7 を使用して Web サイトを開き、コンソールを使用して無効な js ファイルを見つけることです。

UNIXコマンドラインを使用してJavaScriptファイルの末尾のコンマを見つける(または削除する)方法を知っていますか?

これらのコンマを grep しようとしましたが、複数行の正規表現が必要です。また、件名をグーグル検索しましたが、何も役に立ちませんでした。

4

3 に答える 3

4

JSHintはそれらを見つけることができます。ダウンロードして、コマンドラインから実行できます。また、チェックできる便利な追加機能がたくさんあります (不要なものをオフにするオプションもあります)。

于 2012-07-03T10:50:54.143 に答える
2

これを行うスクリプトを作成できます。

$ cat 1.pl 
local $/;

my $data = <>;
$data =~ s@,(\s*)((?://.*?\n)?)(\s*)}@ $1$2$3}@msg;
print $data;

$ cat 1.txt 
var a = {
  foo: 12,
  bar: 13, //this is ok in all browsers except ie7
};

var b = {
  foo: 14,
  bar: 15,
};

$ perl -i 1.pl 1.txt

$ cat 1.txt 
var a = {
  foo: 12,
  bar: 13  //this is ok in all browsers except ie7
};

var b = {
  foo: 14,
  bar: 15 
};
于 2012-07-03T10:57:01.297 に答える
2

完璧ではありませんが、ファイルを見つけます(行を印刷していません):

find -name '*.js' -exec grep -Pzl ",\s*\n+(\s*\/\/.*\n)*\s*[\}\)\]]" {} \;

回答は、この質問から部分的に取得されます。

複数行検索用の正規表現 (grep) が必要

PS

確かにそのような欠陥が 1 つあります。

// whatever is done next,
}

後続昏睡として報告されますが、そうではありません。

于 2012-11-28T18:11:33.270 に答える