【问题标题】:Can I obtain a CKEditor instance from the element it transformed?我可以从它转换的元素中获取 CKEditor 实例吗?
【发布时间】:2013-03-28 15:56:16
【问题描述】:

我有一种情况,我正在克隆一个包含 CKEditor 实例的元素。克隆后,我更改了所有 id 以确保在同一页面中没有两个具有相同 id 的元素。我无法访问 CKEditor 的克隆版本。事实上,如果我通过元素 id 访问它,我会得到原始的(而不是具有新 id 的克隆)。我可以毫无问题地访问被替换的文本区域,但不能访问随之而来的 CKEditor.editor 对象。是否可以通过使用被替换的元素(而不是它的 id)来访问这个对象?

请告诉我我可以在此处添加什么以使问题更清楚...

跟进 我发现我想错了。当我克隆包含 CKEditor 的元素时,我有该元素的副本,但 CKEDITOR 对象不知道它。我最终做的只是删除与克隆编辑器关联的 html 并再次调用CKEDITOR.replace 来替换克隆的文本区域。我希望这是可以理解的,我没有太多时间写。如果有不清楚的地方,请发表评论,我会尽快澄清。

【问题讨论】:

    标签: ckeditor


    【解决方案1】:

    如果您使用的是 jQuery 适配器,则可以使用以下方法获取 CKEDITOR 对象...

    $(element).ckeditorGet();
    

    【讨论】:

      【解决方案2】:

      我不是 100% 知道问题是什么,但如果您有一个 id 为“内容”的文本区域并将其替换为编辑器,那么您可以从 CKEDITOR.instances 访问该实例如:

      CKEDITOR.instances.content        OR 
      CKEDITOR.instances[content]       OR 
      CKEDITOR.instances["content"]
      

      现在,当您将克隆文本区域的 id 更改为“content2”并且克隆编辑器实例不在 CKEDITOR.instances 中时,您需要在 id 更新后替换克隆。

      CKEDITOR.replace('content2');
      

      所以编辑器会有多个实例“content”和“content2”。您可以遍历实例并验证它们并使用您需要的实例。

      for(x in CKEDITOR.instances){
      var instance = CKEDITOR.instances[x];
      // do something with the instance
      }
      

      【讨论】:

      • 在您的示例中,您获取的实例具有元素的 ID,而不是元素本身,这是我试图获取的。
      • 你必须使用某种方式来获取元素,如果你在 jquery 选择器或 Ckeditor UI 元素中有元素,那么你可以从 id 属性中获取 id。
      • CKEDITOR.instances[content] 看起来坏了,除非你有一个变量 content 的值为 'content'
      猜你喜欢
      • 2011-04-09
      • 2012-02-29
      • 2013-02-06
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-01-09
      • 2019-08-03
      • 1970-01-01
      相关资源
      最近更新 更多