2013-08-27 109 views
1

是否可以将“原子”块内容插入到CKEditor中?将原子内容插入到CKEditor中

例如,我想在<p>A B C</p>的“B”之后插入<h1>Test</h1>。目前使用CKEDITOR.currentInstance.insertHtml('<h1>Test</h1>'),块标签被删除,并且变为<p>A BTest C</p>(在“B”之后的光标)。我希望它被插入到光标所在的P块的末尾,如<p>A B C</p><h1>Test</h1>

这里是一个工作示例http://jsfiddle.net/T49Pf/3/。当插入符号位于第一段的任何位置,然后单击“插入”时,我没有插入h1标签。但是当插入符号位于第二个(空白)段落时,我确实有h1块元素。现在,当我点击任意位置的“插入”时,内容会插入到保持原子的位置(不要丢失h1标记)。它类似于“魔术线”插件。

+0

哪个CKEDITOR的版本您使用的? – stackunderflow

+1

[高级内容过滤](http://docs.ckeditor.com/#!/guide/dev_advanced_content_filter) – Reinmar

+0

这是CKEditor的最新版本:4.2.0。我刚刚添加了一个实例。它不是ACF,因为当插入符号处于空白段落时,我确实有原子内容(我也选择标准工具栏来启用H1)。 – jcisio

回答

1

我假设你正在使用editor.insertHtml方法。此方法的行为被设计用于粘贴代码,而您的情况通常意味着单行或部分行被复制,因此应将其作为文本进行处理 - 而不是格式。

在你的情况下,我建议editor.insertElement方法是用于不同的目的(如图像插入),所以它会保留你的元素。从文档

样品:

var element = CKEDITOR.dom.element.createFromHtml('<img src="hello.png" border="0" title="Hello" />'); 
CKEDITOR.instances.editor1.insertElement(element); 
+0

是的,它是editor.insertHtml。这是一个错误的问题,但在jsfiddle的代码是正确的。我将用insertElement进行测试。 – jcisio

+0

没有真正回答这个问题(插入到当前块元素的末尾),但这正是我想要做的。演示http://jsfiddle.net/T49Pf/4/。谢谢! – jcisio

+0

我没有注意到额外的要求。您可以修改选择,以便将其放在您想要的位置,然后插入。 – Reinmar

0

标题标签(h1-6)是块级元素不能被嵌套在<p>标签内...

+0

但我喜欢在* P标签之后插入它,而不是将其剥离。 – jcisio