2017-08-03 99 views
0

我刚开始使用CKEditor,并且我浏览了API文档,这非常好,尽管有些东西被遗漏了。在某个时候,他们的帮助或文档将带您到一个页面,并说要发布问题并在StackOverflow上查找它的答案,所以我就是这样。CKEditor - 如何从最初没有分配ID的ckeditor元素获取数据

在文档中,它确实说明如何获取数据或根据元素ID查找更改。 我有一个页面,其上创建的元素是动态生成的,因为它们是动态生成的,所以没有得到一个ID。 这些元素是textarea<div contenteditibable='true'。我知道CKEditor什么时候做它的事情,它也会在元素的某些部分创建一个ID。 我知道在HTML中一切都在DOM中获得一个ID。 而且我知道我简单化了一些东西。

使用CKEditor,我如何从我不知道ID的事件中获取数据或更改事件?

回答

0

请参阅inlineall示例的源代码。有一个相当聪明的event使用它可以让你得到每个编辑器实例(当它被创建时)及其元素。在该事件监听器中,您可以更改初始编辑器配置(在其他事件的帮助下更加精确)。

编辑器也有instanceReady事件,您可以用同样的方法分配change event,它将捕获特定编辑器实例的所有更改。最后,在更改事件侦听器(以及其他editor events)中,可以访问编辑器,例如事件触发器。

CKEDITOR.on('instanceReady', function(evt) { 
    evt.editor.on('change', function(e) { 
     console.log(e.editor); 
     console.log(e.editor.element); 
    }); 
}); 

希望这可以帮助您开始。

+0

谢谢,'instanceReady'帮助了很多。我最终使用了'instances'和'checkDirty()'属性和方法,并循环遍历这些内容以查看每个元素/对象的变化和信息。 我正在使用类似于下面的东西... 'for(var i in CKEDITOR.instances){ if(CKEDITOR.instances [i] .checkDirty()){ //在这里做一些东西.... // checkDirty()检查内容是否与最初加载的内容不同 //我的变量实际上会返回此时的元素ID }); } ' –

+0

无论哪种方法对您最合适,但请注意,在您更改事件的编辑器中,您不需要通过实例循环来更改事件监听器。另一方面,还有一些与变更事件相关的问题,因此在所有您需要的情况下都不会被解雇: https://dev.ckeditor.com/ticket/14675,https://dev.ckeditor.com/ticket/14329 –

+0

谢谢你关于这个的说明。 在最后一篇文章之后,我确实注意到了,并且意识到我在'on.change'事件中也不需要它。所以我确实拿出了它,并为保存功能制作了一个单独的按钮。如果你把它放在'

'标记/块中,那么保存按钮会自动显示出来,但是我已经有了,我无法让它工作。所以我只有我自己的保存按钮,然后它通过循环并检查更改。 –