有没有办法阻止CKEditor 4过滤我的锚点标签属性?

3

CKEditor 4的属性过滤器会从编辑器中放置的锚点标签中剥离任何出现的“href”。我有一个插件可以创建包含一些“自定义”属性的链接。链接看起来像这样:

<a href="#" document-href="abc123">Some Link</a>

当我调用getData()时,CKEditor返回以下形式的链接:
<a href="#" document->Some Link</a>

有没有一种方法可以指示CKEditor停止过滤链接属性?有人知道在源代码中的哪个位置,我可以修复它吗?
谢谢!
2个回答

4

我刚在 CKEditor 4.1 上检查了这个链接,输出如下:

<p><a href="#">Some Link</a></p>

自从4.1版本以来,document-href已被删除,因为它现在不允许在编辑器中使用。您需要添加一个高级内容过滤器规则,例如:
config.extraAllowedContent = 'a[!href,document-href]';

然后它将在4.1中起作用。在4.1之前,它应该默认工作,无需设置任何内容。

然而,CKEditor的HTML解析器存在错误。它不能正确解析链接上的sth-href属性,因此结果是一个sth-属性。

目前,我建议您将此属性的名称更改为data-url或其他没有以href结尾的名称。

我创建了一个票据:https://dev.ckeditor.com/ticket/10298


感谢您创建这个工单。在找到负责的代码之后,我本来也会这样做的。现在先使用解决方法。我只是在进入编辑器时重写链接,并在从编辑器中检索它们时重新编写它们。 - Nick

2

尝试在配置文件中设置这个。

    config.allowedContent = true;

如果在插入时被过滤,您可以尝试以下方法:
//var yourAnchor = '<a href="#" document-href="abc123">Some Link</a>';

editor.insertHtml(yourAnchor, 'unfiltered_html');

1
谢谢。这没有任何区别。 - Nick
尝试在插入模式中传递“unfiltered_html”。 editor.insertHtml(yourAnchor, 'unfiltered_html'); - Wasif.Butt
allowedContent = true; 设置为真会移除所有过滤,这是使用 CKEditor 的主要原因之一。如果这样做而不是正确配置它,你会创建更多的问题而不是解决它们。因此,虽然它可能解决 OP 的问题,但并不推荐这样做。 - dKen

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接