HTML和Handlebars:
onclick='shareItem("{{name}}")'>
如果名称中包含双引号,则无法成功传递安全转义的名称。
onclick="shareItem('{{name}}')">
如果名称中包含单引号,则无法成功传递安全转义的名称。
我需要处理两种可能性 - 甚至是同一个字符串。
必须定义一个JS变量并将其传递给反斜杠加法器,这感觉很草率。
使用Handlebars或Mustache有更简洁的方法吗?
答案 0 :(得分:18)
您需要注册一个操纵上下文的inline helper。在您的情况下,您需要转义单引号或双引号。
Handlebars.registerHelper('escape', function(variable) {
return variable.replace(/(['"])/g, '\\$1');
});
通过注册这样的帮助器,您可以将它与变量一起使用以实现您想要的效果。
{{ escape name }} # expects to escape any ' or "
我写了一个简单的例子,在jsfiddle上演示这个:http://jsfiddle.net/VLy4L/
答案 1 :(得分:10)
我试图逃避单引号时遇到问题,并且我使用了手柄提供的帮助器,您可以使用三重括号{{{variable}}}进行转义