转义数据属性JSON对象中的引号和html

tim*_*son 3 html javascript jquery html5 escaping

使用HTML5 data-属性,可以将HTML存储在HTML中,如下面的HTML所示.这适用于字符串键:值对,但我无法弄清楚如何使值包括特殊字符或HTML.

给出问题的JSON对象的部分是:( Can't vote on <b>own</b> review也对更复杂的HTML块感兴趣,如下所示:<span style="text-decoration:underline" own</span>.这是下面代码JSFiddle.

JS:

$('button').on('click', function () {
  var $this=$(this), data=$this.data('data');
     $('#output').html(data.message);
});
Run Code Online (Sandbox Code Playgroud)

HTML:

<button type='button' data-data='{"type": "voting", "message": "Can't vote on <span style="text-decoration:underline" own</span> review"}'></button>
<div id='output'></div>
Run Code Online (Sandbox Code Playgroud)

Jul*_*yer 7

您需要转义HTML,特别是在此示例中,&以及用于引用属性值的字符("或者'):

<button type='button' data-data='{"type": "voting", "message": "Can&#39;t vote on <b>own</b> review"}'></button>
Run Code Online (Sandbox Code Playgroud)

要么:

<button type='button' data-data='{"type": "voting", "message": "Can&#39;t vote on <span style=&#39;text-decoration:underline&#39;>own</span> review"}'></button>
Run Code Online (Sandbox Code Playgroud)