[英]Detect and remove javascript object literal trailing commas
IE7不接受JavaScript對象文字中的結尾逗號作為有效的JavaScript語法:
var a = {
foo: 12,
bar: 13,//this is ok in all browsers except ie7
};
目前,我處理此問題的方法是使用IE7打開我的網站,然后使用控制台查找無效的js文件。
您知道如何使用UNIX命令行在JavaScript文件中定位(甚至更好地刪除)尾部逗號嗎?
我試圖grep這些逗號,但需要多行正則表達式。 我也用谷歌搜索,沒有發現有用的東西。
JSHint可以為您找到那些。 您可以下載它並從命令行運行它。 它還具有許多有用的其他功能,可以為您檢查(以及關閉不需要的功能的選項)。
您可以編寫一個腳本來為您執行此操作:
$ 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
};
它不是完美的,但是它可以找到文件(不是在打印行):
find -name '*.js' -exec grep -Pzl ",\s*\n+(\s*\/\/.*\n)*\s*[\}\)\]]" {} \;
答案部分取自此問題:
聚苯乙烯
當然,有一個缺陷是這樣的:
// whatever is done next,
}
它將被報告為尾巴昏迷,而事實並非如此。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.