IE7中不接受JavaScript对象文字中的尾随逗号作为有效的JavaScript语法:
var a = {
foo: 12,
bar: 13,//this is ok in all browsers except ie7
};
目前我处理此问题的方法是使用IE7打开我的网站并使用控制台查找无效的js文件。
您是否知道如何使用UNIX命令行找到(甚至更好地删除)javascript文件中的尾随逗号?
我尝试使用这些逗号,但需要多行正则表达式。我也搜索了这个主题,没有发现任何有用的东西。
答案 0 :(得分:4)
JSHint可以找到适合你的那些。您可以下载它并从命令行运行它。它还有许多有用的附加功能,可以为你检查(以及关闭你不需要的选项)。
答案 1 :(得分: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
};
答案 2 :(得分:2)
它不完美,但它找到文件(它不是印刷线):
find -name '*.js' -exec grep -Pzl ",\s*\n+(\s*\/\/.*\n)*\s*[\}\)\]]" {} \;
答案部分来自这个问题:
Regex (grep) for multi-line search needed
PS
肯定有一个这样的缺陷:
// whatever is done next,
}
它将被报告为尾随昏迷,而不是。