CKEditor:如何重置或重用实例?

时间:2012-06-28 06:40:12

标签: javascript jquery ckeditor

我在内容编辑页面上有一个CKEditor实例。我正在寻找重用或重置CKEditor实例。

用例

我有一个表格,每个单元格都可以编辑。当用户单击一个单元格时,我会向他们展示提供编辑功能的CKEditor。

我正在使用CKEDITOR.instances.cellContent.setData( cellContent );

设置数据

我正在使用var cellContent = CKEDITOR.instances.cellContent.getData();

获取数据

这很有效,除了CKEditor在我调用setData()之后仍然认为它有旧内容

  1. 用户点击了单元格#1
  2. 用户编辑单元格#1,在单词
  3. 上使用颜色“红色”
  4. 用户保存单元格#1
  5. 用户点击单元格#2
  6. 现在CKEditor将颜色“红色”显示为活动/使用。但实际上并不是因为自从使用了这种颜色,其他内容已经被加载到编辑器中。
  7. 有谁知道如何重置,重用或(有效)重新实例化CKEditor实例?

    (谷歌没有帮我这个)

    感谢您的思考!

    更新1

    我正在使用一个编辑器实例,它将被重复用于编辑每个表格单元格。 (在非活动时隐藏,通过在包含元素上设置display:none)

    更新2

    我正在使用firefox 13.0.1 for Mac。尽管Chrome上没有出现此颜色问题,但粗体/斜体按钮也会出现同样的问题。

1 个答案:

答案 0 :(得分:2)

无法在新元素上重新实例化编辑器。一个实例必然会在其整个生命中编辑一个。

您还没有提到如何初始化编辑器。对于每个表格单元格,因为您希望在单元格中有编辑器?或者你在桌子外面有一个编辑器,你只想在那里加载点击的单元格内容并在模糊/更改等时更新它。

如果选择第一个选项,则必须为每个表格单元格创建编辑器实例。您不必在页面加载时执行此操作 - 最好在单击单击时执行此操作。当用户离开单元格时,您不必销毁(editor#destroy)编辑器 - 最好隐藏它并在以后重复使用同一单元格。

如果您选择了第二个选项,那么setData/getData应足以刷新编辑器的UI(按钮状态)。我现在检查了,这看起来像一个bug。幸运的是,在设置数据后调用editor#focus可以很容易地修复它 - 然后更新UI(至少在我的快速测试中)。如果它不起作用,请延迟聚焦,因为我是从控制台手动测试的,所以它默认是延迟的。