uglifyJSは、エスケープされた二重引用符を一重引用符文字列で無視します。二重引用符をエスケープしない
'test " + foo + "'
で
'test \" + foo + \"'
結果これは単に間違っている動作です。
私は.js
を縮小したいので、このデータはJSONに入れなければなりません。しかし、JSON APIはこのようにする必要があります。
{
string: "test \" + foo + \""
}
ない
{
string: "test " + foo + ""
}
は、それは私が私のjavascriptをuglify現時点で\"
を無視していないことuglifyJSを設定し、すべての私の\"
プレースホルダと交換する方法はあります。その後、すべてのプレースホルダーを置き換える文字列を使用して作業を開始します。 しかし、私のテストはうまくいきません。
EDIT:私Javascript
のuglifyバージョンも同様JSON
、有効なJavascript
有効にする必要があります。
EDIT:実際の例の一部です。このコードはuglifiedされてからJSONに入れなければなりません。
var privacylink = '#privacyButtonURL#';
link = '<a href=\"' + privacylink + '\" target=\"_blank\" style=\"color:#4398b5; text-decoration:underline;\">hear</a>';
uglifyバージョンでは、これは動作しないでしょう
var a="#privacyButtonURL#", b='<a href="'+a+'" target="_blank" style="color:#4398b5; text-decoration:underline;">hear</a>'
だろう。
JSON.stringify('var a="#privacyButtonURL#", b='<a href="'+a+'" target="_blank" style="color:#4398b5; text-decoration:underline;">hear</a>'')
「このちょうど間違った行動です " - そうではありません。 JavaScriptでは、この文脈では、2つのステートメントはまったく同じことを意味します。あなたの問題は、JSの特定の書式設定に依存しているため、JSONをストリングを一緒にマッシュすることで構築できることです。代わりに適切なJSONライブラリを使用してください。 – Quentin
'JSON.stringify({string: 'test" + foo + "'})' – coyotte508
これは問題ではありません。バックエンドに送ろうとしている '.js'を動的に作成します。私のバックエンドのAPIはJSONだけです。だから、 '.js'を文字列として有効なJSONを送信します。しかし、この '.js'文字列では、別の方法で二重引用符をエスケープする必要があります。 – DK1990