据我所知,CKEditor会自动删除一个空锚。问题是许多HTML插件都使用空锚,并在页面加载后将它们存储在JavaScript中。
e.g。如果我想使用AddThis,他们让我添加下一个代码:
<div class="addthis_toolbox addthis_default_style ">
<a class="addthis_button_facebook_like" fb:like:layout="button_count"></a>
<a class="addthis_button_tweet"></a>
<a class="addthis_button_pinterest_pinit"></a>
<a class="addthis_counter addthis_pill_style"></a>
</div>
在我将显示从Source更改为Design后,CKEditor将删除所有Anchors。
我知道如果我要添加到Anchors,CKEditor将不会删除它们,但在我的情况下,我不能使用它。
我找到了删除文件中链接的行: /ckeditor/ckeditor_4.0.1_full_source/core/htmldataprocessor.js 行:536-540
他们正在添加一个删除任何空锚的htmlFilter规则。 现在,我知道我可以编辑CKEditor源文件并更改此但我不喜欢 这样做,因为任何时候我将升级版本i将需要使用相同的修复程序,所以我想使用CKEditor API修复它。
我找到了如何以下一种方式添加规则:
CKEDITOR.instances['instanceName'].dataProcessor.dataFilter.addRules(
{
elements :
{
a : function( element )
{
//Do what i like to do
}
}
});
问题是,即使我为A TAG添加规则,它仍然不会覆盖CKEditor所做的规则。
是否有办法覆盖规则或以其他方式解决此问题?
答案 0 :(得分:0)
我找到了解决方案。你需要使用shopify(gem liquid)中的液体代码解析器,它真的很容易做到。一旦你安装了宝石,你就可以做到:
<%= Liquid::Template.parse(your_ckeditor_content).render({
code_you_want_untouched => %Q{ html code here }
}) %>
用该行替换当前的CKEditor输出代码。
然后,您现在将“code_you_want_untouched”作为可在CKEditor中使用的变量。
您在CKeditor内容中称之为:
{{ code_you_want_untouched }}
由于html代码不再来自CKEditor,它不会剥离任何东西。关于液体的一个很酷的部分是你可以使用任意多个变量,你可以在变量代码中执行Ruby。
答案 1 :(得分:0)
尝试在标签上使用随机名称:
<div class="addthis_toolbox addthis_default_style ">
<a class="addthis_button_facebook_like" fb:like:layout="button_count" name="at_r"></a>
<a class="addthis_button_tweet" name="at_t"></a>
<a class="addthis_button_pinterest_pinit" name="at_p"></a>
<a class="addthis_counter addthis_pill_style" name="at_c"></a>
</div>
答案 2 :(得分:0)
我遇到了同样的问题,唯一让我停止删除空标签的方法就是将其添加到config.js
config.protectedSource.push(/<a[^>]*><\/a>/g);
enterCKEDITOR.dtd.$removeEmpty.a = 0;
注意:但是,在我的cke中,背景图像没有出现在编辑器中。他们工作正常,他们只是没有出现。我希望它只是一个将被修复的错误。