【发布时间】:2014-05-07 23:00:33
【问题描述】:
我正在使用的插件遇到问题。我允许用户像这样将一些文本传递给插件:
data-plugin='{ "setting" : "hello world" }'
在引入特殊字符之前没有问题:
data-plugin='{ "setting" : "hello world, it's been awhile." }'
撇号只是停止一切并且不会引发任何错误。我不确定我将如何允许用户像往常一样输入这个?
编辑:这是导致问题的确切属性:
data-plugin='{
"foreground":"1_foreground.png",
"horizon":"50,120",
"subtitle":"Hello world. It's been awhile.",
"subtitle_speed":"3500,2000",
"subtitle_color":"#ff5b00",
"subtitle_pos":"bottom"
}'
编辑 2:
在设置中使用\'时,在合并插件内的对象之前记录:
{
"foreground":"1_foreground.png",
"horizon":"50,120",
"subtitle":"Hello world. \
紧接着我使用 $.extend 来合并它,然后将其应用为数据。
这是如何设置的:
在大量元素上调用插件:
$('.el').plugin({ "setting1" : "value" });
在此处使用它们来修改这些设置:
<div class="el"></div>
<div class="el" data-plugin='{ "setting1" : "special value" }'></div>
无论如何,这不是问题。问题是试图在值中插入撇号。任何 HTML 元素上的单引号都是有效的。
谢谢!
【问题讨论】:
-
我需要知道如何保存和写入数据以获得完整的答案,但这会有所帮助:stackoverflow.com/a/1219983/1173601
-
我假设
data-plugin='{ "setting" : "hello world" }'是一个 HTML 属性? -
是的,它是一个 HTML 属性
-
在生成 HTML 之前,您必须正确地对所有
'进行 HTML 编码。见jsfiddle.net/t9qv4。 -
没有生成 html - 但将由用户输入以进行插件设置。
标签: javascript jquery string encode