【发布时间】:2017-04-22 14:05:47
【问题描述】:
我发现 uglifyJS 会忽略单引号字符串中的转义双引号。
'test \" + foo + \"'
结果
'test " + foo + "'
这只是一种错误的行为。
我有一个要缩小的.js,并且这些数据必须进入 JSON。但是 JSON API 必须是这样的。
{
string: "test \" + foo + \""
}
不是
{
string: "test " + foo + ""
}
有没有办法配置不忽略\"的uglifyJS
目前我 uglify 我的 javascript 并将我所有的 \" 替换为占位符。在此之后,我使用所有占位符进行字符串替换以使其正常工作。
但后来我的测试不起作用。
编辑:我的Javascript 的丑化版本必须是有效的JSON 和有效的Javascript。
编辑:根据要求,真实示例的一部分。此代码必须被丑化,然后放入 JSON。
var privacylink = '#privacyButtonURL#';
link = '<a href=\"' + privacylink + '\" target=\"_blank\" style=\"color:#4398b5; text-decoration:underline;\">hear</a>';
丑化版本是
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 中,在这种情况下,这两个语句的含义完全相同。您的问题是您依赖于 JS 的特定格式,以便您可以通过将字符串混合在一起来构建 JSON。请改用适当的 JSON 库。
-
JSON.stringify({string: 'test " + foo + "'}) -
这不是问题。我动态创建了一个
.js,我想将它发送到我的后端。我后端的 API 只需要 JSON。所以我用.js作为字符串向它发送一个有效的JSON。但是在这个.js字符串中,我需要转义双引号,否则它不起作用。 -
@DK1990 我不明白,你能举一个简单、真实的例子,
{string: JSON.stringify('test " + foo + "')}不起作用吗?它会给出你想要的,将单引号转换成双引号并转义里面的双引号。无需手动添加多余/非法的转义字符。 -
按要求。我添加了一个真实的例子。
标签: javascript json quotes double-quotes uglifyjs