假设我使用jquery加载器安装了CKEditor 4.3(我这样做)。我已经加载了一个插件(让我们称之为'foobar')几乎可以实现我想要的。插件的plugin.js文件中有一个函数,我想在页面中手动调用。对于此示例,我们调用函数hello()。
我想在点击特定链接时调用它。
如何在ckeditor插件中引用该功能?
这是plugin.js结构:
(function() {
if (!supportsLocalStorage()) {
CKEDITOR.plugins.add("foobar", {}); //register a dummy plugin to pass CKEditor plugin initialization process
return;
}
CKEDITOR.plugins.add("foobar", {
lang: 'de,en,jp,pl,pt-br,sv,zh,zh-cn', // %REMOVE_LINE_CORE%
version: 0.10,
init: function(editor) {
CKEDITOR.document.appendStyleSheet(CKEDITOR.getUrl(CKEDITOR.plugins.getPath('foobar') + 'css/foobar.min.css'));
if (typeof (jQuery) === 'undefined') {
CKEDITOR.scriptLoader.load('//ajax.googleapis.com/ajax/libs/jquery/1/jquery.min.js', function() {
jQuery.noConflict();
loadPlugin(editor);
});
} else {
CKEDITOR.scriptLoader.load(CKEDITOR.getUrl(CKEDITOR.plugins.getPath('foobar') + 'js/extensions.min.js'), function() {
loadPlugin(editor);
});
}
}
});
function loadPlugin(editorInstance) {
/*
load of random stuff that isn't important for this example..
*/
}
var hello = function() {
alert('hello!');
};
}
答案 0 :(得分:1)
插件的正确定义应如下:
( function() {
// Definition of the plugin.
CKEDITOR.plugins.add( 'foo', {
init: function( editor ) {
...
}
} );
// Methods and variables related to the plugin but exposed to the public.
CKEDITOR.plugins.foo = {
hello: function() {
...
}
};
} )();
然后只需CKEDITOR.plugins.foo.hello()
。它是CKEditor核心插件中共享的最常见模式。
答案 1 :(得分:0)
假设插件添加了类似:
CKEDITOR.plugins.add('foobar',
{
hello: function() { alert('hello'); }
});
(例如,'hello'是传递给CKEDITOR.plugins.add的对象的函数,而不仅仅是文件中的函数。)
CKEDITOR.plugins.registered.foobar.hello()
应该有用。
编辑:要在您的示例中调用hello,您需要将它附加到您传递给CKEDITOR.plugins.add的对象。 e.g。
var hello = function() {
alert('hello!');
};
CKEDITOR.plugins.add("foobar", {
lang: 'de,en,jp,pl,pt-br,sv,zh,zh-cn', // %REMOVE_LINE_CORE%
version: 0.10,
init: function(editor) {...},
hello: hello
});