2013-04-03 165 views
3

CKEditor 4属性过滤剥离了放入编辑器的锚标签中的任何“href”事件。我有一个插件可以创建包含一些“自定义”属性的链接。链接看起来是这样的:有没有办法阻止CKEditor 4过滤我的锚标签属性?

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

的CKEditor的时候我打电话的getData(返回这种形式的链接):

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

有没有办法来指示的CKEditor停止过滤链接属性?有人碰巧知道这个正则表达式的来源在哪里,所以我可以修复它?

谢谢!

回答

4

我刚刚检查该链接的CKEditor 4.1 - 输出:

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

由于4.1 document-href被剥离,因为它现在允许在编辑器中。您必须添加一个Advanced Content Filter规则 - 例如:

config.extraAllowedContent = 'a[!href,document-href]'; 

然后它将在4.1中工作。在4.1之前,它应该默认工作,不需要设置任何东西。

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

现在我建议您将此属性的名称更改为data-url或其他任何不带href的结尾。

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

+0

感谢您创建票证。在我找到负责任的代码之后,我打算这么做。解决方法现在可以完成。我正在重写编辑器中的链接,并在编辑器中将其重新编辑时重写它们。 – Nick 2013-04-05 14:45:20

2

尝试在配置文件中设置此项。

config.allowedContent = true; 

也如果混得插入过滤,然后你可以试试这个:

//var yourAnchor = '<a href="#" document-href="abc123">Some Link</a>'; 

editor.insertHtml(yourAnchor, 'unfiltered_html'); 
+1

谢谢。这没有什么区别。 – Nick 2013-04-03 19:35:01

+0

尝试在插入模式下传递'unfiltered_html'。 editor.insertHtml(yourAnchor,'unfiltered_html'); – 2013-04-03 20:00:15

+0

设置'allowedContent = true;'删除所有过滤,这是使用CKEditor的主要原因之一。你会创建更多的问题,而不是通过这样做来解决问题,而不是正确配置它。所以,虽然它可能解决OP的问题,但不推荐。 – dKen 2015-01-16 15:08:07

相关问题