如何在页面中调用CKEditor 4插件功能?

时间:2014-06-26 13:55:52

标签: javascript jquery ckeditor

假设我使用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!');
    };
}

2 个答案:

答案 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
        });