不幸的是,在我的项目中,我们在 JavaScript 中生成了大量的 HTML 代码,如下所示:
var html = new StringBuffer();
html.append("<td class=\"gr-my-deals\"><a href=\"").append(deal.url).append("\" target=\"_blank\">").append(deal.description).append("</a></td>");
我对此有两个具体的抱怨:
- 在 HTML 字符串中使用转义双引号 (\")。这些应替换为单引号 (') 以提高可读性。
- 使用 .append() 代替 JavaScript 字符串连接运算符“+”</li>
应用这两个建议,生成以下等效的代码行,我认为它更具可读性:
var html = "<td class=’gr-my-deals’><a href=’" + deal.url + "’ target=’_blank’>" + deal.description + "</a></td>";
我现在正在寻找一种将第一行代码自动转换为第二行的方法。到目前为止,我想出的只是对我们所有的 Javascript 代码运行以下查找和替换:
Find: ).append(
Replace: +
这会将上面显示的代码行转换为:
html.append("<td class=\"gr-my-deals\"><a href=\"" + deal.url + "\" target=\"_blank\">" + deal.description + "</a></td>)";
这应该安全地删除除第一个“append()”语句之外的所有语句。不幸的是,我想不出任何安全的方法来自动将转义的双引号转换为单引号。请记住,我不能简单地进行查找/替换,因为在某些情况下您确实需要使用转义的双引号。通常,这是在您生成包含嵌套 JS 的 HTML 并且 JS 包含字符串参数时,例如
function makeLink(stringParam) {
var sb = new StringBuffer();
sb.append("<a href=\"JavaScript:myFunc('" + stringParam + "');\">");
}
我的问题(最后)是:
- 有没有更好的方法来安全地用 '+' 替换对 'append()' 的调用
- 有没有办法用单引号,正则表达式安全地替换转义的双引号?
干杯,唐