HTML 和 Handlebars:
onclick='shareItem("{{name}}")'>
在名称中包含双引号时,未能成功地传递安全转义的名称。
onclick="shareItem('{{name}}')">
当名称中有单引号时,无法成功地传递安全转义的名称。
我需要处理两种情况 - 甚至在同一个字符串中也要这样。
不得不定义一个JS变量并将其传递给反斜杠添加器感觉很笨拙。
是否有更清晰的使用Handlebars或Moustache的方法?
HTML 和 Handlebars:
onclick='shareItem("{{name}}")'>
在名称中包含双引号时,未能成功地传递安全转义的名称。
onclick="shareItem('{{name}}')">
当名称中有单引号时,无法成功地传递安全转义的名称。
我需要处理两种情况 - 甚至在同一个字符串中也要这样。
不得不定义一个JS变量并将其传递给反斜杠添加器感觉很笨拙。
是否有更清晰的使用Handlebars或Moustache的方法?
您需要注册一个内联助手来操纵上下文。在您的情况下,您需要转义单引号或双引号。
Handlebars.registerHelper('escape', function(variable) {
return variable.replace(/(['"])/g, '\\$1');
});
通过注册这样的帮助程序,您可以使用变量来实现您想要的效果。
{{ escape name }} # expects to escape any ' or "
我在jsfiddle上写了一个简单的例子来演示这个问题:http://jsfiddle.net/VLy4L/
我在尝试转义单引号时遇到了问题,我使用的是handlebars提供的helper,你可以使用三个大括号 {{{ 变量 }}} 进行转义。
data-*
属性来临时存储数据,然后在JavaScript函数中访问它? - Seyeong JeongHandlebars.registerHelper('escape', function(variable) { return variable.replace(/(['"\\])/g, '\\$1'); });
- famzah