2

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

用例

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

我正在使用设置数据CKEDITOR.instances.cellContent.setData( cellContent );

我正在获取数据var cellContent = CKEDITOR.instances.cellContent.getData();

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

  1. 用户单击单元格 #1
  2. 用户编辑单元格 #1,在单词上使用颜色“红色”
  3. 用户保存单元格 #1
  4. 用户单击单元格#2
  5. 现在 CKEditor 将颜色“红色”显示为活动/使用。但实际上并不是因为使用了该颜色,编辑器中已经加载了其他内容。

有谁知道如何重置、重用或(有效地)重新实例化 CKEditor 实例?

(谷歌在这方面没有帮助我)

感谢您的思考!

更新 1

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

更新 2

我在 Mac 上使用 Firefox 13.0.1。尽管 Chrome 上不会出现这种颜色问题,但粗体/斜体按钮确实会出现同样的问题。

4

1 回答 1

2

无法在新元素上重新实例化编辑器。一个实例在其整个生命周期内都绑定到一个可编辑的实例。

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

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

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

于 2012-06-28T07:24:22.860 回答