亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 編程 > JavaScript > 正文

手把手教你 CKEDITOR 4 擴展插件制作

2019-11-19 11:19:06
字體:
來源:轉載
供稿:網友

本文實例講述了CKEDITOR 4 擴展插件制作。分享給大家供大家參考,具體如下:

今天讓我們來探索一下ckeditor的擴展功能,換句話說就是自定義按鈕,以及點擊按鈕之后實現的功能。

要實現自定義按鈕,我們要做幾個事情:

  • 1、準備一個圖標,最好是16*16大小的png格式圖片,你沒有的話,姜哥幫你準備了一張這里寫圖片描述。
  • 2、在plugins目錄下建立我們和自定義插件同名的目錄,并且在里面建立一個叫plugin.js的文件。
  • 3、在我們自己的插件目錄中,建立一個dialogs目錄,并且在里面新建一個與我們插件同名的js文件,實現插件的功能。

動手!

1、建立相應的文件夾和文件,姜哥在ckeditor/plugins/下新建了一個myplug目錄,將來我的插件就叫myplug

這里寫圖片描述

2、編輯plugin.js文件,填入以下內容,特別要注意里面的名字前后保持一致,后期運行有問題,多半是名字寫錯了:

(function(){ //Section 1 : 按下自定義按鈕時執行的代碼 var a= {  exec:function(editor){   alert("This a custome button!");  } }, //Section 2 : 創建自定義按鈕、綁定方法 b='myplug'; //注意myplug名字 CKEDITOR.plugins.add(b,{  init:function(editor){   CKEDITOR.dialog.add('myplugDialog', this.path + 'dialogs/myplug.js'); //注意myplug名字   editor.addCommand('myplug', new CKEDITOR.dialogCommand('myplugDialog')); //注意myplug名字   //注意myplug名字 和 圖片路徑   editor.ui.addButton('myplug',{    label:'打開我的插件',    icon: this.path + 'myplug.png',    command:b   });  } });})();

3、配置config.js中的toolbar,將自定義插件顯示出來:

CKEDITOR.editorConfig = function( config ) { config.extraPlugins="myplug"; //增加了我們的自定義插件 config.toolbar = 'Full'; config.toolbar_Full = [  { name: 'custome_plugin', items : [ 'myplug'] }, //將自定義插件加入toolbar  { name: 'insert', items : [ 'upload','album','-','Table' ] },  { name: 'clipboard', items : [ 'Cut','Copy','Paste','PasteText','PasteFromWord','-','Undo','Redo' ] },  { name: 'basicstyles', items : [ 'Bold','Italic','Underline','Strike','Subscript','Superscript' ] },  { name: 'paragraph', items : [ 'NumberedList','BulletedList','-','-','Blockquote',  '-','JustifyLeft','JustifyCenter','JustifyRight','JustifyBlock' ] },  { name: 'colors', items : [ 'TextColor','BGColor' ] },  { name: 'document', items : [ 'Source' ] }, ];};

在這里我們只加了兩行,一行是config.extraPlugins="myplug";這個向ckeditor注冊了我們的自定義插件,告訴ckeditor還有我們的這個myplug這么個東西;另一行是{ name: 'custome_plugin', items : [ 'myplug'] },用來配置toolbar,讓ckeditor將我們的按鈕顯示出來,注意后面的逗號,不要漏了噢。

保存之后,看一下運行效果,圖標出來了,可是點擊以后一閃而過,那是因為我們還沒有開發對應的dialog代碼:

這里寫圖片描述

注意:如果大家這一步失敗了,可以嘗試從兩個方面排查:

①、前面我一再強調的,名字有沒有弄錯;
②、也許是文件編碼的問題,嘗試把所有的中文都刪掉,換成英文試試。

4、開發dialogs/myplug.js,實現業務功能

myplug/dialogs/新建一個叫myplug.js的文件,這個其實和前面一步中,plugin.js文件中的這一行是對應的:

CKEDITOR.dialog.add('myplugDialog', this.path + 'dialogs/myplug.js'); //注意myplug名字

在那個文件中,其實指定了我們dialog文件的目錄和文件名,理論上是可以隨意的,但是為了容易管理,墻裂建議大家搞成一樣的,不要給自己制造麻煩~來看一下,我們要在myplug.js里寫什么:

(function () {  function myplugDialog(editor) {  return {   title: 'Who does you want to say hello?', //窗口標題   minWidth: 300,   minHeight: 80,   buttons: [{    type: 'button',    id: 'someButtonID',    label: 'Button',    onClick: function () {     alert('This is a custome button');    }    //對話框底部的自定義按鈕   },   CKEDITOR.dialog.okButton, //對話框底部的確定按鈕   CKEDITOR.dialog.cancelButton], //對話框底部的取消按鈕   contents:      //每一個contents在對話框中都是一個tab頁   [    {     id: 'user',   //contents的id     label: 'You name',     title: 'You name',     elements:    //定義contents中的內容,我們這里放一個文本框,id是name     [      {       id: 'name',       type: 'text',       style: 'width: 50%;',       label: 'You name',      }     ]    }   ],   onLoad: function () {    //alert('onLoad');   },   onShow: function () {    //alert('onShow');   },   onHide: function () {    //alert('onHide');   },   onOk: function () {    //點擊 確定 按鈕之后觸發的事件    var name = this.getValueOf( 'user', 'name' );    //從界面上取值的方法,getValueOf( 'contents的id', '控件的id' )    editor.insertHtml('<p>' + name + ' : Hello world!' + '</p>');    //將內容放入到editor    this.commitContent();   },   onCancel: function () {    //alert('onCancel');   },   resizable: CKEDITOR.DIALOG_RESIZE_HEIGHT  }; } CKEDITOR.dialog.add('myplugDialog', function (editor) {  return myplugDialog(editor); });})();

在上面這段程序里,我們首先定義了一個myplugDialog,并且給他設置了標題、最小寬度、最小高度,然后又添加了一個tab頁,在里面放了一個對話框。在程序的底部,我們把這個對話框注冊到ckeditor中去,這樣前端點擊按鈕,才可以調用到這個對話框。

常見錯誤:

1、名字沒有匹配,再次強調一下,這里面myplugDialog千萬千萬要前后一致,而且,要和plugin.js中的名稱一致!

2、中文的問題,如果出現點擊沒有效果,大家可以首先嘗試,將我這段代碼中,所有的中文都刪掉試試。或者用另外的方法,轉換一下編碼格式,在Notepad++中,可以這樣:

這里寫圖片描述

用我標紅的兩個選項試試看,一般都是可以的,重新保存之后,再次運行:

這里寫圖片描述

點擊我們的插件后,出來一個對話框,填入我的名字,姜哥,再按確定。

這里寫圖片描述

我們填入的內容就被插入到當前光標處了!

好了,今天我們學習了ckeditor的自定義插件,以及插件中內容的交互。內容還是比較多的,大家也可能會碰到各種問題,姜哥再這里再嘮叨兩句,問題一般都是兩種原因引起的:

①、名稱前后不一致;
②、中文編碼格式引起的亂碼。

完整實例代碼點擊此處本站下載

更多關于JavaScript相關內容感興趣的讀者可查看本站專題:《JavaScript錯誤與調試技巧總結》、《JavaScript操作XML文件技巧總結》、《JavaScript中json操作技巧總結》、《JavaScript數據結構與算法技巧總結》、《JavaScript遍歷算法與技巧總結》及《JavaScript數學運算用法總結

希望本文所述對大家JavaScript程序設計有所幫助。

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
成人在线视频福利| 91香蕉嫩草神马影院在线观看| 日韩av不卡电影| 亚洲一区中文字幕在线观看| 性日韩欧美在线视频| 亚洲欧洲日本专区| 亚洲v日韩v综合v精品v| 国产成人一区二区三区电影| 国产成人福利网站| 国产精品在线看| 精品国产精品三级精品av网址| 国内精品久久久久影院优| 国产精品久久不能| 久久人91精品久久久久久不卡| 精品福利在线观看| 久热精品视频在线观看一区| 国产精品成av人在线视午夜片| 久久久久久国产| 精品国产1区2区| 成人黄色午夜影院| 亚洲欧洲午夜一线一品| 欧美在线一级视频| 国产97人人超碰caoprom| 亚洲成人免费网站| 91理论片午午论夜理片久久| 一本大道香蕉久在线播放29| 久久青草精品视频免费观看| 亚洲精品久久久久久久久久久| 国产精品日日摸夜夜添夜夜av| 亚洲免费av网址| 日韩在线视频中文字幕| 色999日韩欧美国产| 日韩精品视频在线观看免费| 欧美日韩一区二区免费视频| 久久久久久久激情视频| 欧美人成在线视频| 久久久久久国产免费| 国产精品va在线播放我和闺蜜| 国产噜噜噜噜久久久久久久久| 国产日韩在线免费| 伊人久久久久久久久久| 久久影院免费观看| 97久久精品在线| 亚洲精品成人av| 精品久久久精品| 欧美在线视频a| 性亚洲最疯狂xxxx高清| 国产欧美一区二区三区在线| 久久久久中文字幕2018| 日韩在线视频免费观看高清中文| 国产日韩欧美在线看| 欧美成人激情图片网| 正在播放欧美一区| 久久亚洲精品网站| 日韩动漫免费观看电视剧高清| 国产精品久久综合av爱欲tv| 日本欧美一级片| www亚洲欧美| 久久偷看各类女兵18女厕嘘嘘| 日韩福利在线播放| 中文字幕欧美日韩在线| 国产精品视频在线播放| 国产精品久久久久久亚洲调教| 久久视频在线播放| 欧美午夜电影在线| 亚洲一二在线观看| 精品香蕉一区二区三区| 国产亚洲精品久久久久久| 亚洲免费成人av电影| 国产精品久久久久久久美男| 欧美一区第一页| 欧美成人精品一区二区三区| 亚洲最大激情中文字幕| 亚洲日韩欧美视频| 精品一区二区电影| 91人成网站www| 成人免费观看49www在线观看| 国产精品一二区| 欧美第一淫aaasss性| 51精品国产黑色丝袜高跟鞋| 日韩欧美一区二区三区| 亚洲国产精品va在看黑人| 国产精品自拍偷拍视频| 亚洲激情电影中文字幕| 亚洲精品不卡在线| 亚洲福利在线播放| 欧美激情欧美激情在线五月| 欧美第一黄网免费网站| 欧美色播在线播放| 欧美老女人bb| 美女少妇精品视频| 欧美午夜影院在线视频| 国产乱人伦真实精品视频| 欧美亚洲一级片| 亚洲高清不卡av| 国产精国产精品| 日韩国产在线播放| 亚洲色图校园春色| 97久久久免费福利网址| 欧美丝袜美女中出在线| 91精品国产高清久久久久久91| 国产伦精品一区二区三区精品视频| 国产99久久精品一区二区 夜夜躁日日躁| 日本精品va在线观看| 欧美一性一乱一交一视频| xxxxx91麻豆| 91在线|亚洲| 久久久久久久成人| 91精品国产综合久久久久久蜜臀| 亚洲人成在线一二| 亚洲电影成人av99爱色| 欧美性做爰毛片| 中文在线不卡视频| 亚洲精品xxxx| 亚洲老司机av| 亚洲无限乱码一二三四麻| 亚洲精品自产拍| 人九九综合九九宗合| 国产精品青草久久久久福利99| 中文字幕视频在线免费欧美日韩综合在线看| 日韩免费在线电影| 日韩欧美在线视频免费观看| 九色91av视频| 欧美香蕉大胸在线视频观看| 日韩在线国产精品| 国产成人拍精品视频午夜网站| 亚洲人成网站免费播放| 亚洲福利视频网| 精品国产乱码久久久久久天美| 色悠悠久久久久| 日韩欧美国产成人| 亚洲欧洲激情在线| 国产精品久久久久久久久久ktv| 久久亚洲私人国产精品va| 亚洲最新av在线网站| 国产一区二区色| 亚洲高清在线观看| 亚洲男人天堂九九视频| 精品久久久91| 欧美激情一级欧美精品| 国内成人精品一区| 亚洲国产精品中文| 亚洲最大福利视频网| 欧美电影免费看| 久久综合国产精品台湾中文娱乐网| 欧美成aaa人片免费看| 久久国产精品电影| 日本精品va在线观看| 色综合久久中文字幕综合网小说| 欧美精品在线观看91| 成人美女av在线直播| 欧美激情综合色综合啪啪五月| 日韩成人av网| 中文欧美日本在线资源| 久久精品视频va| 亚洲精品国精品久久99热一| 亚洲第一网中文字幕| 欧美大码xxxx| 清纯唯美亚洲激情| 午夜精品久久久久久久99热浪潮| 国产美女高潮久久白浆| 国产中文字幕日韩| 精品中文字幕在线观看| 亚洲精品国产精品国自产观看浪潮|