2

我正在使用 redactor 8.2.2 构建一个小自定义插件来自定义链接。

这是我想要实现的一个例子:

var insertText = "<a href='#target' data-rel='{\"key\":\"value\"}'>text</a>";

/* later in the code... */
this.execCommand('insertHtml', insertText);

我最终在编辑器中得到了这段代码:

<a href="#target" data-rel="{&quot;key&quot;:&quot;value&quot;}">text</a>

最后用双引号保存在数据库中,导致进一步的麻烦:

<a href="#target" data-rel="{"key";"value"}">text</a>

有没有办法强制单引号?

我也尝试使用insertHtmlAdvanced,但没有插入链接。

编辑_ _

看来问题不insertText在于格式化的方式。无论格式是什么,如果 data-rel 属性在单引号之间表示其值,则会添加双引号。因此,解决方案可能是找到insertHtml命令的解决方法,或者对插入的代码进行后处理。

编辑_ _ _

根据 Imperavi 支持,JSON 不应与 data-* 一起使用。我终于找到了一种解决方法,方法是删除 JSON 字符串中的任何引号,然后在解析 data-rel 值之前添加它们。但是,我想这不是最有效和最好的解决方案......

4

1 回答 1

2

用这个:

this.execCommand('insertHtml', insertText.replace(/'/g, "\\'"));
于 2013-08-09T12:25:45.033 回答