CKEditor - 自动删除空锚

时间:2013-04-14 11:20:52

标签: ckeditor

据我所知,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所做的规则。

是否有办法覆盖规则或以其他方式解决此问题?

3 个答案:

答案 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中,背景图像没有出现在编辑器中。他们工作正常,他们只是没有出现。我希望它只是一个将被修复的错误。