我刚刚开始使用CKEditor,但很难理解插件系统.
当你点击它时,我能够添加一个简单的按钮,上面写着'Test':
var myplugin_function = function () {
alert('Test');
}
var plugin_name='myplugin';
CKEDITOR.plugins.add(plugin_name,
{
init:function(c) {
c.addCommand(plugin_name,myplugin_function);
c.ui.addButton(plugin_name,
{
label:'This is my plugin',
command:plugin_name,
icon:this.path+'myplugin.png'
});
}
});
Run Code Online (Sandbox Code Playgroud)
我知道这段代码应该只执行一次,例如在a中plugin.js,但这不是我使用它的方式.每次加载Ajax页面时都会执行CKEditor实例,包括我的插件代码.
这就是我使用它来删除实例的原因,如果它存在:
if (CKEDITOR.instances['mytextarea']) {
CKEDITOR.remove(CKEDITOR.instances['mytextarea']);
}
Run Code Online (Sandbox Code Playgroud)
然后我使用jquery方法从textarea创建ckeditor:
$('#mytextarea').ckeditor();
Run Code Online (Sandbox Code Playgroud)
但是第二次加载ajax页面时,我得到一个关于已经注册的插件的错误.所以我需要一种方法来删除插件并能够再次添加它.
这甚至可能吗?
UPDATE
这似乎有效:
我现在检查插件是否已注册:
if (!CKEDITOR.plugins.registered[plugin_name]) {
}
Run Code Online (Sandbox Code Playgroud)
围绕CKEDITOR.plugins.add(b, ......部分
您没有显示如何添加插件,因此很难判断您的确切问题是什么;但根据您提供的代码,我可以建议您使用比“a”、“b”和“c”更好的变量名称。以这种方式理解代码相当困难。
另外,CKEDITOR.remove只是从实例数组中删除实例,但它并没有真正清除使用的资源,您应该使用CKEDITOR.instances['mytextarea']。改为销毁( true )