如何在调用JavaScript函数的工具栏中添加自定义按钮?

时间:2009-12-24 07:06:28

标签: javascript ckeditor

我想在工具栏中添加一个调用Tada()等JavaScript函数的按钮?

有关如何添加此内容的任何想法?

10 个答案:

答案 0 :(得分:101)

此外,还有一种很好的方法可以在不创建插件的情况下添加按钮。

HTML:

<textarea id="container">How are you!</textarea>

的javascript:

editor = CKEDITOR.replace('container'); // bind editor

editor.addCommand("mySimpleCommand", { // create named command
    exec: function(edt) {
        alert(edt.getData());
    }
});

editor.ui.addButton('SuperButton', { // add new button and bind our command
    label: "Click me",
    command: 'mySimpleCommand',
    toolbar: 'insert',
    icon: 'https://avatars1.githubusercontent.com/u/5500999?v=2&s=16'
});

查看其工作原理:DEMO

答案 1 :(得分:91)

我正在为CKEditor开发一些自定义插件,这是我的书签生存包:

出于您的目的,我建议您查看_source/plugins目录中的一个插件,例如“打印”按钮。添加一个简单的Javascript函数很容易实现。您应该能够复制打印插件(将目录从_source转移到实际的插件/目录,稍后担心缩小),重命名,重命名其中的每个“打印”,给按钮一个你以后使用的正确名称在工具栏设置中包含按钮,然后添加您的功能。

答案 2 :(得分:28)

请参阅此网址,以获取简单示例http://ajithmanmadhan.wordpress.com/2009/12/16/customizing-ckeditor-and-adding-a-new-toolbar-button/

有几个步骤:

1)创建一个插件文件夹

2)注册你的插件(上面的URL说是编辑ckeditor.js文件不要这样做,因为它会在下次重新发布新版本时中断。而是编辑config.js并添加一行如此< / p>

config.extraPlugins = 'pluginX,pluginY,yourPluginNameHere'; 

3)在你的插件文件夹中创建一个名为plugin.js的JS文件 这是我的代码

(function() {
    //Section 1 : Code to execute when the toolbar button is pressed
    var a = {
        exec: function(editor) {
            var theSelectedText = editor.getSelection().getNative();
            alert(theSelectedText);
        }
    },

    //Section 2 : Create the button and add the functionality to it
    b='addTags';
    CKEDITOR.plugins.add(b, {
        init: function(editor) {
            editor.addCommand(b, a);
            editor.ui.addButton("addTags", {
                label: 'Add Tag', 
                icon: this.path+"addTag.gif",
                command: b
            });
        }
    }); 
})();

答案 3 :(得分:5)

如果有人感兴趣,我使用Prototype为此编写了一个解决方案。为了使按钮正确显示,我必须在extraPlugins: 'ajaxsave'方法调用中指定CKEDITOR.replace()

这是plugin.js:

CKEDITOR.plugins.add('ajaxsave',
{
    init: function(editor)
    {
    var pluginName = 'ajaxsave';

    editor.addCommand( pluginName,
    {
        exec : function( editor )
        {
            new Ajax.Request('ajaxsave.php',
            {
                method:     "POST",
                parameters: { filename: 'index.html', editor: editor.getData() },
                onFailure:  function() { ThrowError("Error: The server has returned an unknown error"); },
                on0:        function() { ThrowError('Error: The server is not responding. Please try again.'); },
                onSuccess:  function(transport) {

                    var resp = transport.responseText;

                    //Successful processing by ckprocess.php should return simply 'OK'. 
                    if(resp == "OK") {
                        //This is a custom function I wrote to display messages. Nicer than alert() 
                        ShowPageMessage('Changes have been saved successfully!');
                    } else {
                        ShowPageMessage(resp,'10');
                    }
                }
            });
        },

        canUndo : true
    });

    editor.ui.addButton('ajaxsave',
    {
        label: 'Save',
        command: pluginName,
        className : 'cke_button_save'
    });
    }
});

答案 4 :(得分:3)

CKEditor 4

官方CKEditor 4文档中有一些方便的教程,包括编写插件,将内容插入编辑器,注册按钮并显示对话窗口:

如果您阅读这两篇文章,请转到Integrating Plugins with Advanced Content Filter

CKEditor 5

到目前为止,有一篇介绍文章可供选择:

CKEditor 5 Framework: Quick Start - Creating a simple plugin

答案 5 :(得分:2)

您需要创建一个插件。 CKEditor的文档非常差,特别是因为我认为自FCKEditor以来它已经发生了重大变化。我建议复制一个现有的插件并研究它。快速谷歌“CKEditor插件”也找到this blog post

答案 6 :(得分:2)

您可以按如下方式添加按钮图像:

CKEDITOR.plugins.add('showtime',   //name of our plugin
{    
    requires: ['dialog'], //requires a dialog window
    init:function(a) {
  var b="showtime";
  var c=a.addCommand(b,new CKEDITOR.dialogCommand(b));
  c.modes={wysiwyg:1,source:1}; //Enable our plugin in both modes
  c.canUndo=true;
 
  //add new button to the editor
  a.ui.addButton("showtime",
  {
   label:'Show current time',
   command:b,
   icon:this.path+"showtime.png"   //path of the icon
  });
  CKEDITOR.dialog.add(b,this.path+"dialogs/ab.js") //path of our dialog file
 }
});

Here是包含所有步骤的实际插件。

答案 7 :(得分:0)

本文也可能有用http://mito-team.com/article/2012/collapse-button-for-ckeditor-for-drupal

有关于使用自定义按钮构建您自己的CKEditor插件的代码示例和分步指南。

答案 8 :(得分:0)

如果您自定义了ckeditor工具栏,请使用以下方法:

function entries(obj) {
  var result = Object.keys(obj).map(function(key) {
      return [Number(key), obj[key]];
    });
    return result;
}
console.log(
  entries(obj = {"1":5,"2":7,"3":0,"4":0,"5":0,"6":0,"7":0,"8":0,"9":0,"10":0,"11":0,"12":0})
  );
var editor = CKEDITOR.replace("da_html", {
  disableNativeSpellChecker: false,
  toolbar: [{
      name: "clipboard",
      items: ["Cut", "Copy", "Paste", "PasteText", "PasteFromWord", "-", "Undo", "Redo"]
    },
    "/",
    {
      name: "basicstyles",
      items: ["Italic"]
    },
    {
      name: "paragraph",
      items: ["BulletedList"]
    },
    {
      name: "insert",
      items: ["Table"]
    },
    "/",
    {
      name: "styles",
      items: ["Styles", "Format", "Font", "FontSize"]
    },
    {
      name: "colors",
      items: ["TextColor", "BGColor"]
    },
    {
      name: "tools",
      items: ["Maximize", "saveButton"]
    },
  ]
});

editor.addCommand("mySaveCommand", { // create named command
  exec: function(edt) {
    alert(edt.getData());
  }
});

editor.ui.addButton("saveButton", { // add new button and bind our command
  label: "Click me",
  command: "mySaveCommand",
  toolbar: "insert",
  icon: "https://i.stack.imgur.com/IWRRh.jpg?s=328&g=1"
});

由于stackoverflow的某些安全性问题,jsfiddle中的工作代码: http://jsfiddle.net/k2vwqoyp/

答案 9 :(得分:-2)

可能有几个插件,但可以使用CSS创建按钮。首先点击编辑器中提到的Source按钮然后将按钮代码粘贴到那里,因为我使用CSS创建按钮并添加了href

<p dir="ltr" style="text-align:center"><a href="https://play.google.com/store/apps/details?id=com.mobicom.mobiune&hl=en" style="background-color:#0080ff; border: none;color: white;padding: 6px 20px;text-align: center;text-decoration: none;display: inline-block;border-radius: 8px;font-size: 15px; font-weight: bold;">Open App</a></p>

这是关于它的Button Written Open App。 您可以使用#0080ff(浅蓝色)

更改颜色