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

首頁 > 開發 > 綜合 > 正文

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

2024-07-21 02:54:18
字體:
來源:轉載
供稿:網友

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

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

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

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

動手!

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

CKEDITOR,插件制作

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代碼:

CKEDITOR,插件制作

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

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

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、中文的問題,如果出現點擊沒有效果,大家可以首先嘗試,將我這段代碼中,所有的中文都刪掉試試?;蛘哂昧硗獾姆椒ǎD換一下編碼格式,在Notepad++中,可以這樣:

CKEDITOR,插件制作

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

CKEDITOR,插件制作

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

CKEDITOR,插件制作

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

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

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

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

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


注:相關教程知識閱讀請移步到編輯器頻道。
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
97香蕉久久超级碰碰高清版| 国产精品成人播放| 日韩在线观看免费高清| 国产精品91久久久| 国产日本欧美一区二区三区在线| 国产精品欧美亚洲777777| 久久99精品视频一区97| 久久久久久一区二区三区| 欧美电影免费播放| 亚洲级视频在线观看免费1级| 日韩免费av在线| 欧美激情视频在线观看| 一区二区亚洲欧洲国产日韩| 国产午夜精品理论片a级探花| 亚洲一区av在线播放| 91久久久久久久一区二区| 日韩中文字幕久久| 国产一区二区三区在线播放免费观看| 亚洲天堂日韩电影| 久久国产一区二区三区| 精品久久久久人成| 成人天堂噜噜噜| 国产成人精品网站| 91久久精品日日躁夜夜躁国产| 96pao国产成视频永久免费| 日韩专区在线播放| 亚洲电影免费观看高清完整版在线| 国产日韩在线免费| 欧美一级在线亚洲天堂| 久久九九热免费视频| 欧美疯狂做受xxxx高潮| 日本成熟性欧美| 国产精品美女www| 成人免费淫片视频软件| 国产成人在线精品| 国产精品免费观看在线| 国产日韩欧美电影在线观看| 国产综合久久久久| 欧洲s码亚洲m码精品一区| 九九视频直播综合网| 欧美在线激情视频| 理论片在线不卡免费观看| 国产精品午夜一区二区欲梦| 亚洲欧美日韩天堂| 亚洲国产日韩欧美在线99| 亚洲一区二区三区乱码aⅴ蜜桃女| 日韩在线精品视频| 91午夜理伦私人影院| 国产精品久久久久久久久借妻| 欧美电影电视剧在线观看| 成人国产精品久久久久久亚洲| 国产精品美女免费| 久久夜色精品亚洲噜噜国产mv| 欧美日本黄视频| 精品国产乱码久久久久久虫虫漫画| 亚洲精品白浆高清久久久久久| 亚洲丝袜一区在线| 国产精品日韩在线播放| 78色国产精品| 96精品久久久久中文字幕| 国产精品wwwwww| www.午夜精品| 国产深夜精品福利| 国产日韩欧美另类| 亚洲女人初尝黑人巨大| 久久人人爽人人爽人人片av高清| 中文字幕精品网| 国产精品天天狠天天看| 欧美激情xxxx性bbbb| 亚洲成人免费在线视频| 日韩亚洲国产中文字幕| 日本精品久久电影| 亚洲一区二区福利| 国产在线视频不卡| 久久福利视频导航| 日韩电影中文字幕| 亚洲第一免费网站| 在线不卡国产精品| 国产精品男人爽免费视频1| 美女啪啪无遮挡免费久久网站| 插插插亚洲综合网| 久久久日本电影| 欧美日韩精品中文字幕| 国产日韩精品综合网站| 亚洲精品欧美极品| 国产成人一区二区三区电影| 欧美丝袜一区二区三区| 久久精品国产精品| 日韩免费观看网站| 午夜精品福利视频| 91精品国产91久久久久久最新| 欧美日韩人人澡狠狠躁视频| www.午夜精品| 中文字幕国内精品| 亚洲人成77777在线观看网| 亚洲色图在线观看| 精品欧美激情精品一区| 国产成人a亚洲精品| 亚洲美女中文字幕| 亚洲成人网久久久| 国产91在线播放九色快色| 国产成人在线一区二区| 国产成人jvid在线播放| 国产91在线播放| 欧美丰满少妇xxxx| 欧美一区深夜视频| 欧美精品手机在线| 亚洲日韩欧美视频一区| 久久久久久久久久久亚洲| 欧美在线精品免播放器视频| 免费99精品国产自在在线| 国产精品自产拍高潮在线观看| 国模精品视频一区二区三区| 81精品国产乱码久久久久久| 456亚洲影院| 成人精品一区二区三区电影免费| 国产精品高清免费在线观看| 91精品久久久久久久久久久久久久| 亚洲视频在线视频| 日本a级片电影一区二区| 在线精品国产欧美| 久久在线观看视频| 欧美在线观看一区二区三区| 超碰97人人做人人爱少妇| 国产精品精品视频一区二区三区| 91网站免费观看| 国产精品久久久久免费a∨大胸| 亚洲精品av在线播放| 久久久久久久国产精品| 国产精品成人国产乱一区| 精品亚洲国产成av人片传媒| 久久精品91久久久久久再现| 日本精品视频网站| 国产精品一二区| 中文字幕在线视频日韩| 欧美视频中文在线看| 亚洲精品在线看| 国产精品99久久久久久久久| 国产亚洲欧美日韩一区二区| 国产精品久久久久久久久影视| 欧美性受xxx| 97精品国产97久久久久久| 欧美精品性视频| 日av在线播放中文不卡| 国产精品一区久久| 国产精品久久久999| 国产精品福利久久久| 亚洲变态欧美另类捆绑| 欧美国产第一页| 成人国产精品日本在线| 欧美黄色片免费观看| 亚洲欧美一区二区三区久久| 成人黄色av网| 中文字幕不卡在线视频极品| 91久久精品一区| 韩国三级日本三级少妇99| 亚洲美女av网站| 亚洲精品小视频在线观看| 欧美日韩国产精品一区| 亚洲奶大毛多的老太婆| 欧美日韩国产成人在线| 欧美一级电影在线| 一区二区三区高清国产| 国产精品6699|