如何配置CKEditor以保持数据属性而不是删除它们?

时间:2014-03-13 22:44:21

标签: ckeditor

我使用CKeditor编辑丰富的HTML页面,但是某些javascript功能依赖于触发它们的<a>标记的特殊属性。

这些情况很少见,只有5000多条记录的数据库上的一些记录需要触发此功能,而这个特定的js模块需要特殊的属性作为参数化的方式:

<a href="#" data-from="ROM" data-to="NYC" data-promo="8373794">Buy your tickets</a>

CKeditor允许我添加这些属性(通过编辑条目的源代码),但是当客户端编辑页面时,编辑器会删除它们并中断该功能。

指示我的客户不要编辑此特定记录似乎不专业。更改为另一个WYSIWYG编辑器可能会起作用,但我认为这是最后的手段。

CKEditor必须有一个解决方案!

1 个答案:

答案 0 :(得分:9)

我找到了它:

特殊配置选项:

            extraAllowedContent: '*[*]{*}(*)'

做了这个伎俩。

所以我使用的构造函数是:

    $('.wysiwyg').ckeditor({
            toolbar : 'Basic',
            extraAllowedContent: '*[*]{*}(*)'
    });

请注意,它是&#34; EXTRA&#34;允许内容选项,因此它不会覆盖默认值。

更新:事实证明我的特殊属性有一些&amp;在其中,CKEditor用HTML实体&amp;替换它们。我添加了以下两个选项:

            entities: false,
            basicEntities: false,

但是他们阻止了这种情况只发生在文本节点中,而不是发生在属性内部。然后我找到了这个选项:

            forceSimpleAmpersand: true

它有效。它现在还可以,但如果最终我必须将&amp;作为任何价值的一部分 - 实体,而不仅仅是&amp; (通常在内容共享链接中需要这样做) - 编辑器会将它们分解,将它们更改为普通&amp;。