Handlebars specific - escape both single and doubl

2019-04-05 01:45发布

问题:

HTML and Handlebars:

onclick='shareItem("{{name}}")'> 

Does not successfully pass a safely escaped name when it has double quotes in it.

onclick="shareItem('{{name}}')"> 

Does not successfully pass a safely escaped name when it has single quotes in it.

I need to handle both eventualities- and even in the same string.

It feels sloppy to have to define a JS variable and pass it to a backslash adder.

Is there a cleaner way to do this with Handlebars or Moustache?

回答1:

You need to register a inline helper that manipulates the context. In your case, you need to escape a single or double quote.

Handlebars.registerHelper('escape', function(variable) {
  return variable.replace(/(['"])/g, '\\$1');
});

By registering such helper, you can use it with a variable to achieve what you want.

{{ escape name }} # expects to escape any ' or "

I wrote a simple example to demonstrate this on jsfiddle: http://jsfiddle.net/VLy4L/



回答2:

I have a problem trying to escape single quotes, and I use the helper that handleblars provide, you can use triple brackets {{{ variable }}} for escape