CKeditor富文本编辑器使用技巧之添加自定义插件的方法

本文实例讲述了CKeditor富文本编辑器使用技巧之添加自定义插件的方法。分享给大家供大家参考,具体如下:

首先就是在CKeditor的plugins目录下新建一个目录qchoice:

qchoice目录下的结构如下:

然后, images中如下:

dialogs中如下:

我们先来看plugins.js文件的内容:

(function() {
  CKEDITOR.plugins.add("qchoice", {
    requires: ["dialog"],
    init: function(a) {
      a.addCommand("qchoice", new CKEDITOR.dialogCommand("qchoice"));
      a.ui.addButton("qchoice", {
        label: "qchoice",//调用dialog时显示的名称
        command: "qchoice",
        icon: this.path + "images/qchoice.jpg"//在toolbar中的图标
      });
      CKEDITOR.dialog.add("qchoice", this.path + "dialogs/qchoice.js")
    }
  })
})();

再来看qchoice.js文件的内容:

CKEDITOR.dialog.add('qchoice', function (editor) { //要和plugin.js 中的command 一致
  var escape = function (value) {
    return value;
  };
  return {
    title: '', //对话框标题
    minWidth: 500, //对话框宽度
    minHeight: 600,//对话框高度
    contents: [{  //对话框内容
      id: 'choice',
      name: 'choice',
      label: '插入选择题答案',
      title: '插入选择题答案',
      elements: [{
        id: 'rdType_1',
        type: 'radio', //表单元素类型:单选按钮
        items: [['中国赞','[中国赞]'],['广告','[广告]'],['doge','[doge]'],['喵喵','[喵喵]'],['二哈','[二哈]'],['抱抱','[抱抱]'],['哼','[哼]'],['思考','[思考]'],['生病','[生病]'],['偷乐','[偷乐]']]
      },
      {
        id: 'rdType_2',
        type: 'radio', //表单元素类型:单选按钮
        items: [['笑cry','[笑cry]'],['馋嘴','[馋嘴]'],['拜拜','[拜拜]'],['右哼哼','[右哼哼]'],['左哼哼','[左哼哼]'],['怒骂','[怒骂]'],['鄙视','[鄙视]'],['笑而不语','[笑而不语]']]
      },
      {
        id: 'rdType_3',
        type: 'radio', //表单元素类型:单选按钮
        items: [['害羞','[害羞]'],['费解','[费解]'],['挖鼻','[挖鼻]'],['悲伤','[悲伤]'],['打脸','[打脸]'],['抓狂','[抓狂]'],['哈哈','[哈哈]'],['傻眼','[傻眼]'],['好喜欢','[好喜欢]'],['好爱哦','[好爱哦]']]
      },
      {
        id: 'rdType_4',
        type: 'radio', //表单元素类型:单选按钮
        items: [['失望','[失望]'],['good','[good]'],['弱','[弱]'],['耶','[耶]'],['来','[来]'],['握手','[握手]'],['加油','[加油]'],['haha','[haha]'],['拳头','[拳头]'],['男孩儿','[男孩儿]']]
      },
      {
        id: 'rdType_5',
        type: 'radio', //表单元素类型:单选按钮
        items: [['话筒','[话筒]'],['礼物','[礼物]'],['飞机','[飞机]'],['干杯','[干杯]'],['围脖','[围脖]'],['钟','[钟]'],['肥皂','[肥皂]'],['浪','[浪]'],['女孩儿','[女孩儿]'],['照相机','[照相机]']]
      },
      {
        id: 'rdType_6',
        type: 'radio', //表单元素类型:单选按钮
        items: [['熊猫','[熊猫]'],['喜','[喜]'],['绿丝带','[绿丝带]'],['威武','[威武]'],['弗莱见钱眼开','[弗莱见钱眼开]'],['看涨','[看涨]'],['看跌','[看跌]'],['奥特曼','[奥特曼]'],['兔子','[兔子]']]
      }
      ,
      {
        id: 'rdType_7',
        type: 'radio', //表单元素类型:单选按钮
        items: [['顶','[顶]'],['米奇喜欢','[米奇喜欢]'],['米奇飞吻','[米奇飞吻]'],['米奇大哭','[米奇大哭]'],['米奇比心','[米奇比心]'],['笑哈哈','[笑哈哈]'],['羞嗒嗒','[羞嗒嗒]'],['憧憬','[憧憬]'],['酷','[酷]']]
      }
      ,
      {
        id: 'rdType_8',
        type: 'radio', //表单元素类型:单选按钮
        items: [['月亮','[月亮]'],['围观','[围观]'],['蛋糕','[蛋糕]'],['微风','[微风]'],['音乐','[音乐]'],['猪头','[猪头]'],['鲜花','[鲜花]'],['太阳','[太阳]'],['Aloha','[Aloha]'],['赞啊','[赞啊]'],['求关注','[求关注]']]
      }
      ,
      {
        id: 'rdType_9',
        type: 'radio', //表单元素类型:单选按钮
        items: [['哈欠','[哈欠]'],['泪','[泪]'],['怒','[怒]'],['闭嘴','[闭嘴]'],['疑问','[疑问]'],['白眼','[白眼]'],['吐','[吐]'],['黑线','[黑线]'],['委屈','[委屈]'],['下雨','[下雨]'],['伤心','[伤心]']]
      }
      ,
      {
        id: 'rdType_10',
        type: 'radio', //表单元素类型:单选按钮
        items: [['作揖','[作揖]'],['星星','[星星]'],['半星','[半星]'],['空星','[空星]'],['草泥马','[草泥马]'],['浮云','[浮云]'],['沙尘暴','[沙尘暴]'],['给力','[给力]'],['骷髅','[骷髅]'],['最右','[最右]']]
      }
      ,
      {
        id: 'rdType_11',
        type: 'radio', //表单元素类型:单选按钮
        items: [['太开心','[太开心]'],['挤眼','[挤眼]'],['衰','[衰]'],['感冒','[感冒]'],['可怜','[可怜]'],['汗','[汗]'],['色','[色]'],['可爱','[可爱]'],['钱','[钱]'],['ok','[ok]'],['NO','[NO]'],['蜡烛','[蜡烛]']]
      }
      ,
      {
        id: 'rdType_12',
        type: 'radio', //表单元素类型:单选按钮
        items: [['吃狗粮','[吃狗粮]'],['蚁人','[蚁人]'],['黄蜂女','[黄蜂女]'],['吃瓜','[吃瓜]'],['允悲','[允悲]'],['坏笑','[坏笑]'],['困','[困]'],['互粉','[互粉]'],['睡','[睡]'],['并不简单','[并不简单]']]
      }
      ,
      {
        id: 'rdType_13',
        type: 'radio', //表单元素类型:单选按钮
        items: [['阴险','[阴险]'],['嘘','[嘘]'],['嘻嘻','[嘻嘻]'],['爱你','[爱你]'],['吃惊','[吃惊]'],['污','[污]'],['鼓掌','[鼓掌]'],['给你小心心','[给你小心心]'],['心','[心]'],['赞','[赞]']]
      }
      ,
      {
        id: 'rdType_14',
        type: 'radio', //表单元素类型:单选按钮
        items: [['微笑','[微笑]'],['偷笑','[偷笑]'],['舔屏','[舔屏]'],['亲亲','[亲亲]'],['摊手','[摊手]'],['跪了','[跪了]'],['晕','[晕]'],['米奇爱你','[米奇爱你]'],['带着微博去旅行','[带着微博去旅行]']]
      }]
    }],
    onOk: function () { //点击确定按钮出发onOK事件。以下代码主要目的是构造一个select下拉框
      qtype_1 = this.getValueOf('choice', 'rdType_1');
      qtype_2 = this.getValueOf('choice', 'rdType_2');
      qtype_3 = this.getValueOf('choice', 'rdType_3');
      qtype_4 = this.getValueOf('choice', 'rdType_4');
      qtype_5 = this.getValueOf('choice', 'rdType_5');
      qtype_6 = this.getValueOf('choice', 'rdType_6');
      qtype_7 = this.getValueOf('choice', 'rdType_7');
      qtype_8 = this.getValueOf('choice', 'rdType_8');
      qtype_9 = this.getValueOf('choice', 'rdType_9');
      qtype_10 = this.getValueOf('choice', 'rdType_10');
      qtype_11 = this.getValueOf('choice', 'rdType_11');
      qtype_12 = this.getValueOf('choice', 'rdType_12');
      qtype_13 = this.getValueOf('choice', 'rdType_13');
      qtype_14 = this.getValueOf('choice', 'rdType_14');
      rtn = "";
      if(qtype_1 != null){
        rtn += qtype_1;
      }
      if(qtype_2 != null){
        rtn += qtype_2;
      }
      if(qtype_3 != null){
        rtn += qtype_3;
      }
      if(qtype_4 != null){
        rtn += qtype_4;
      }
      if(qtype_5 != null){
        rtn += qtype_5;
      }
      if(qtype_6 != null){
        rtn += qtype_6;
      }
      if(qtype_7 != null){
        rtn += qtype_7;
      }
      if(qtype_8 != null){
        rtn += qtype_8;
      }
      if(qtype_9 != null){
        rtn += qtype_9;
      }
      if(qtype_10 != null){
        rtn += qtype_10;
      }
      if(qtype_11 != null){
        rtn += qtype_11;
      }
      if(qtype_12 != null){
        rtn += qtype_12;
      }
      if(qtype_13 != null){
        rtn += qtype_13;
      }
      if(qtype_14 != null){
        rtn += qtype_14;
      }
      if (rtn != "") {
        rtns = "<span>"+rtn+"</span>";
        editor.insertHtml(rtns);
      }
      else {
        return false;
      }
    }
  };
});
function htmlEncode(str) {
  var temp = document.createElement("div");
  (temp.textContent != null) ? (temp.textContent = str) : (temp.innerText = str);
  var output = temp.innerHTML;
  temp = null;
  return output;
}

之后就是config.js配置文件的内容了:

/**
 * @license Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
 * For licensing, see LICENSE.md or http://ckeditor.com/license
 */
CKEDITOR.editorConfig = function( config ) {
  config.toolbarGroups = [
    { name: 'clipboard',  groups: [ 'clipboard', 'undo' ] },
    { name: 'editing',   groups: [ 'find', 'selection', 'spellchecker' ] },
    { name: 'links' },
    { name: 'insert' },
    { name: 'forms' },
    { name: 'tools' },
    { name: 'document',  groups: [ 'mode', 'document', 'doctools' ] },
    { name: 'others' },
    '/',
    { name: 'basicstyles', groups: [ 'basicstyles', 'cleanup' ] },
    { name: 'paragraph',  groups: [ 'list', 'indent', 'blocks', 'align', 'bidi' ] },
    { name: 'styles' },
    { name: 'colors' },
    { name: 'about' },
    { name: 'extent', items: ["qchoice"] }
  ];
  config.toolbar_Full = [
    ['Source','-','Save','NewPage','Preview','-','Templates'],
    ['Cut','Copy','Paste','PasteText','PasteFromWord','-','Print','SpellChecker', 'Scayt'],
    ['Undo','Redo','-','Find','Replace','-','SelectAll','RemoveFormat'],
    ['Form', 'Checkbox', 'Radio', 'TextField', 'Textarea', 'Select','Button', 'ImageButton', 'HiddenField'],
    '/',
    ['Bold','Italic','Underline','Strike','-','Subscript','Superscript'],
    ['NumberedList','BulletedList','-','Outdent','Indent','Blockquote'],
    ['JustifyLeft','JustifyCenter','JustifyRight','JustifyBlock'],
    ['Link','Unlink','Anchor'],
    ['Image','Flash','Table','HorizontalRule','Smiley','SpecialChar','PageBreak'],
    '/',
    ['Styles','Format','Font','FontSize'],
    ['TextColor','BGColor'],
    ["qchoice"]
  ];
  config.image_previewText=' ';
  config.filebrowserImageUploadUrl = 'uploadFiles';
  // config.extraPlugins = 'justify';
  config.extraPlugins += (config.extraPlugins ? ',justify' : 'justify');
  config.extraPlugins += (config.extraPlugins ? ',qchoice' : 'qchoice');
  // config.extraPlugins="linkbutton";
  //
  // config.extraPlugins="ilink";
  //
  // config.extraPlugins="ijuzi";
  // config.extraPlugins="iti";
  config.removeButtons = 'Underline,Subscript,Superscript';
  // Set the most common block elements.
  config.format_tags = 'p;h1;h2;h3;pre';
  // Simplify the dialog windows.
  config.removeDialogTabs = 'image:advanced;link:advanced';
  config.image_previewText=' ';
  config.entities = false;
};

好啦,到这里,自定义插件就算是放入成功了。咱们自定义的插件主要的逻辑结构就是在qchoice.js文件中,可以改变它的内容,来实现不同的功能。

好啦,本次记录就到这里了。

更多关于JavaScript相关内容感兴趣的读者可查看本站专题:《JavaScript错误与调试技巧总结》、《JavaScript操作XML文件技巧总结》、《JavaScript中json操作技巧总结》、《JavaScript数据结构与算法技巧总结》、《JavaScript遍历算法与技巧总结》及《JavaScript数学运算用法总结》

希望本文所述对大家JavaScript程序设计有所帮助。

(0)

相关推荐

  • ckeditor自定义插件使用方法详解

    ckeditor是一款功能很强大的富文本编辑的工具,给我们提供了绝大多数功能,满足我们日常开发所用,但由于特殊情况,可能会需要修改ckeditor的插件.ckeditor提供了给我们很方便扩展插件的接口. 最经由于项目的需要,需要重写ckeditor的上传图片的功能,以下是自定义图片上传功能的部分代码: 1.在ckeditor/plugins/目录下新建editorupload目录,用来存放自定义插件;在该目录下新建目录images用来存放自定以图片,在images目录下放入插件图片image.

  • ckeditor syntaxhighlighter代码高亮插件,完美修复

    CKeditor的对象跟FCKeditor不大一样,不能直接调用innerHTML和outerHTML了,绕了个大弯子,在当前节点前插入一个新节点,然后删除原先的节点...很傻,不过解决了问题. 顺便给高级配置页多加了一个选项"不自动转换超链接",syntaxhighlighter默认会把代码里的网址转换成超链接,看起来很不爽,现在可以自由设置了,呵呵 来个图 使用方法: 1. 解压附件到plugins (sablog2.0在include\editor\plugins) 2. 打开C

  • CKeditor与syntaxhighlight打造joomla代码高亮

    (效果如图所示!) 最近在用csdn和cnblogs发帖子和写随笔的时候,发现了好多的IT的网站或者和代码有关系的一些论坛,博客之类,他们都有一个非常好的语法高亮!很强大! 看了这儿效果很不错的,因为,自己也用joomla建了小小的消遣的站点!经常也会贴一些代码什么的,没有一个"语法高亮的"功能,总感觉不是很方便的!所以,昨天晚上,费了好多功夫,终于解决了这个问题! 现在就记录一下吧! 首先joomla默认的编辑器是tinymce貌似和博客园后台也用这个编辑器!淡然,他就是没有语法高亮

  • CKEditor 4.4.1 添加代码高亮显示插件功能教程【使用官方推荐Code Snippet插件】

    本文实例讲述了CKEditor 4.4.1 添加代码高亮显示插件功能.分享给大家供大家参考,具体如下: 随着CKEditor4.4.1的发布,以前一直困扰的代码高亮问题终于完美的得到解决,在CKEditor4.4中官方发布了Code Snippet这个代码片段的插件,终于可以完美的内嵌使用代码高亮了,以前都是使用网友自己开发的代码高亮插件.下面就来介绍如何使用Code Snippet这个代码高亮插件.本文还介绍了CKEditor中如何安装Code Snippet插件. 新版本附加信息 CKEdi

  • FCKEditor SyntaxHighlighter整合实现代码高亮显示

    因此上网查了许多资料,没有说怎么做的,都是自己改好一个包上传.我研究了一个这些整合好的例子,粗略说一说,对以后开发其它FCKeditor插件也有好处. 为方便大家使用,我们特提供两个已经做成插件的版本.下载地址 第一步:在FCKeditor的路径中找到"editor\plugins\",在其中创建"highlighter"文件夹. 第二步:将"dp.SyntaxHighlighter\Scripts"文件夹复制到此文件夹中,所有的js文件和一个f

  • FCKeditor + SyntaxHighlighter 让代码高亮着色插件

    FCKeditor是现在最为流行的开源编辑器,SyntaxHighlighter是一个用JS实现的代码高亮显示插件,可以最小化修改您的程序实现效果,最终效果截图: 演示网页: 下载FCKeditor + SyntaxHighlighter插件包:fck_SyntaxHighlighter我们打包版 下面分步介绍如何在FCKeditor环境中使用SyntaxHighlighter. 后台FCKeditor编辑器的修改 1.将包解压后,把 insertcode 文件夹上传到 FCKeditor编辑器

  • ckeditor syntaxhighlighter代码高亮插件配置分享

    最近由于自己想做一个网站形式的代码库,自已写一个在线文本编辑器,对于现在的我来,确实是很不切实际,呵呵!再说了,现在有一个非常好的在线文本编辑器(ckeditor)了,我和必再去费这等功夫呢!有现成的,拿过用就是的呗!正所谓的拿来主义!不过这个在线文本编辑器,对于我们程序员来说有一个算是缺陷吧!没有代码高亮的功能!这样把代码贴上去,很不好看!今天晚上,我总是把他给弄出来了.当然也采在别人的肩膀上做成的.在此感谢他们的分享!费话不多说了!咱们进入正题吧! 首先去官方网站下载个ckeditor 其次

  • asp.net 为FCKeditor开发代码高亮插件实现代码

    所以就为FCKeditor写了个InsertCode的插件.整个插件的制作过程非常简单:FCKeditor插件开发请参考FCKeditor官网的文档: http://docs.fckeditor.net/FCKeditor_2.x/Developers_Guide/Customization/Plug-ins 首先,我们在FCKeditor/editor/plugins目录下新建一个insertcode目录,并在insertcode目录下新建一个fckplugin.js文件. 在新建的fckpl

  • CKEditor 附插入代码的插件

    按照惯例,先来段废话:CKEditor是新一代的FCKeditor,是一个重新开发的版本.CKEditor是全球最优秀的网页在线文字编辑器之一,因其惊人的性能与可扩展性而广泛的被运用于各大网站. 从官网下载ckeditor,我下载的是ckeditor_3.0.2.CKEditor与原来的FCKeditor有太大的不同了,作为开发人员,在做自己的博客的时候总是需要贴代码的,只好给它先做一个插入代码的插件了.高亮代码用的是"SyntaxHighlighter". 1.在"cked

  • CKEditor中加入syntaxhighlighter代码高亮插件

    从官网 下载ckeditor,我下载的是CKEditor 3.3.1 .CKEditor与原来的FCKeditor有太大的不同了,作为开发人员,在做自己的博客的时候总是需要贴代码的,只好给它先做一个插入代码的插件了.高亮代码用的是"SyntaxHighlighter ". 1.在"ckeditor/plugins/"目录下新建一个"insertcode"目录,然后在"insertcode"目录下新建一个"plugin

  • FCKeditor 和 SyntaxHighlighter 代码高亮插件的整合

    Introduction(简介) This is a dialog-based plugin to handle formatting of source code for FCKeditor 2.5.x. It WON'T work with the new CKEditor (yet).(CKEditor 是FCKEditor 的升级版,不过,SyntaxHighlighter 还不能在 CKEditor 中实现代码高亮) It makes use of the SyntaxHighligh

随机推荐