手把手教你 CKEDITOR 4 擴(kuò)展插件制作
本文實(shí)例講述了CKEDITOR 4 擴(kuò)展插件制作。分享給大家供大家參考,具體如下:
今天讓我們來探索一下ckeditor的擴(kuò)展功能,換句話說就是自定義按鈕,以及點(diǎn)擊按鈕之后實(shí)現(xiàn)的功能。
要實(shí)現(xiàn)自定義按鈕,我們要做幾個(gè)事情:
- 1、準(zhǔn)備一個(gè)圖標(biāo),最好是16*16大小的png格式圖片,你沒有的話,姜哥幫你準(zhǔn)備了一張
。
- 2、在
plugins
目錄下建立我們和自定義插件同名的目錄,并且在里面建立一個(gè)叫plugin.js
的文件。 - 3、在我們自己的插件目錄中,建立一個(gè)dialogs目錄,并且在里面新建一個(gè)與我們插件同名的js文件,實(shí)現(xiàn)插件的功能。
動(dòng)手!
1、建立相應(yīng)的文件夾和文件,姜哥在ckeditor/plugins/下新建了一個(gè)myplug
目錄,將來我的插件就叫myplug
2、編輯plugin.js
文件,填入以下內(nèi)容,特別要注意里面的名字前后保持一致,后期運(yùn)行有問題,多半是名字寫錯(cuò)了:
(function(){ //Section 1 : 按下自定義按鈕時(shí)執(zhí)行的代碼 var a= { exec:function(editor){ alert("This a custome button!"); } }, //Section 2 : 創(chuàng)建自定義按鈕、綁定方法 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";
這個(gè)向ckeditor注冊(cè)了我們的自定義插件,告訴ckeditor還有我們的這個(gè)myplug
這么個(gè)東西;另一行是{ name: 'custome_plugin', items : [ 'myplug'] }
,用來配置toolbar,讓ckeditor將我們的按鈕顯示出來,注意后面的逗號(hào),不要漏了噢。
保存之后,看一下運(yùn)行效果,圖標(biāo)出來了,可是點(diǎn)擊以后一閃而過,那是因?yàn)槲覀冞€沒有開發(fā)對(duì)應(yīng)的dialog
代碼:
注意:如果大家這一步失敗了,可以嘗試從兩個(gè)方面排查:
①、前面我一再?gòu)?qiáng)調(diào)的,名字有沒有弄錯(cuò);
②、也許是文件編碼的問題,嘗試把所有的中文都刪掉,換成英文試試。
4、開發(fā)dialogs/myplug.js
,實(shí)現(xiàn)業(yè)務(wù)功能
在myplug/dialogs/新建一個(gè)叫myplug.js
的文件,這個(gè)其實(shí)和前面一步中,plugin.js
文件中的這一行是對(duì)應(yīng)的:
CKEDITOR.dialog.add('myplugDialog', this.path + 'dialogs/myplug.js'); //注意myplug名字
在那個(gè)文件中,其實(shí)指定了我們dialog文件的目錄和文件名,理論上是可以隨意的,但是為了容易管理,墻裂建議大家搞成一樣的,不要給自己制造麻煩~來看一下,我們要在myplug.js
里寫什么:
(function () { function myplugDialog(editor) { return { title: 'Who does you want to say hello?', //窗口標(biāo)題 minWidth: 300, minHeight: 80, buttons: [{ type: 'button', id: 'someButtonID', label: 'Button', onClick: function () { alert('This is a custome button'); } //對(duì)話框底部的自定義按鈕 }, CKEDITOR.dialog.okButton, //對(duì)話框底部的確定按鈕 CKEDITOR.dialog.cancelButton], //對(duì)話框底部的取消按鈕 contents: //每一個(gè)contents在對(duì)話框中都是一個(gè)tab頁(yè) [ { id: 'user', //contents的id label: 'You name', title: 'You name', elements: //定義contents中的內(nèi)容,我們這里放一個(gè)文本框,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 () { //點(diǎn)擊 確定 按鈕之后觸發(fā)的事件 var name = this.getValueOf( 'user', 'name' ); //從界面上取值的方法,getValueOf( 'contents的id', '控件的id' ) editor.insertHtml('<p>' + name + ' : Hello world!' + '</p>'); //將內(nèi)容放入到editor this.commitContent(); }, onCancel: function () { //alert('onCancel'); }, resizable: CKEDITOR.DIALOG_RESIZE_HEIGHT }; } CKEDITOR.dialog.add('myplugDialog', function (editor) { return myplugDialog(editor); }); })();
在上面這段程序里,我們首先定義了一個(gè)myplugDialog
,并且給他設(shè)置了標(biāo)題、最小寬度、最小高度,然后又添加了一個(gè)tab頁(yè),在里面放了一個(gè)對(duì)話框。在程序的底部,我們把這個(gè)對(duì)話框注冊(cè)到ckeditor中去,這樣前端點(diǎn)擊按鈕,才可以調(diào)用到這個(gè)對(duì)話框。
常見錯(cuò)誤:
1、名字沒有匹配,再次強(qiáng)調(diào)一下,這里面myplugDialog
千萬千萬要前后一致,而且,要和plugin.js
中的名稱一致!
2、中文的問題,如果出現(xiàn)點(diǎn)擊沒有效果,大家可以首先嘗試,將我這段代碼中,所有的中文都刪掉試試?;蛘哂昧硗獾姆椒?,轉(zhuǎn)換一下編碼格式,在Notepad++中,可以這樣:
用我標(biāo)紅的兩個(gè)選項(xiàng)試試看,一般都是可以的,重新保存之后,再次運(yùn)行:
點(diǎn)擊我們的插件后,出來一個(gè)對(duì)話框,填入我的名字,姜哥,再按確定。
我們填入的內(nèi)容就被插入到當(dāng)前光標(biāo)處了!
好了,今天我們學(xué)習(xí)了ckeditor的自定義插件,以及插件中內(nèi)容的交互。內(nèi)容還是比較多的,大家也可能會(huì)碰到各種問題,姜哥再這里再嘮叨兩句,問題一般都是兩種原因引起的:
①、名稱前后不一致;
②、中文編碼格式引起的亂碼。
完整實(shí)例代碼點(diǎn)擊此處本站下載。
更多關(guān)于JavaScript相關(guān)內(nèi)容感興趣的讀者可查看本站專題:《JavaScript錯(cuò)誤與調(diào)試技巧總結(jié)》、《JavaScript操作XML文件技巧總結(jié)》、《JavaScript中json操作技巧總結(jié)》、《JavaScript數(shù)據(jù)結(jié)構(gòu)與算法技巧總結(jié)》、《JavaScript遍歷算法與技巧總結(jié)》及《JavaScript數(shù)學(xué)運(yùn)算用法總結(jié)》
希望本文所述對(duì)大家JavaScript程序設(shè)計(jì)有所幫助。
- FCKeditor .NET的配置、擴(kuò)展與安全性經(jīng)驗(yàn)交流
- FCKeditor 插件開發(fā) 示例(詳細(xì)版本)
- ckeditor自定義插件使用方法詳解
- CKEditor 附插入代碼的插件
- 添加FCKeditor插件需要注意的地方
- fckeditor 修改記錄添加行距功能插件
- ckeditor插件開發(fā)簡(jiǎn)單實(shí)例
- fckeditor 插件實(shí)例 制作步驟
- fckeditor 插件開發(fā)參考文檔
- CKEditor中加入syntaxhighlighter代碼高亮插件
- CKEDITOR二次開發(fā)之插件開發(fā)方法
- CKEditor擴(kuò)展插件:自動(dòng)排版功能autoformat插件實(shí)現(xiàn)方法詳解
相關(guān)文章
JS實(shí)現(xiàn)網(wǎng)頁(yè)頂部向下滑出的全國(guó)城市切換導(dǎo)航效果
這篇文章主要介紹了JS實(shí)現(xiàn)網(wǎng)頁(yè)頂部向下滑出的全國(guó)城市切換導(dǎo)航效果,涉及javascript鼠標(biāo)事件及頁(yè)面元素顯示的實(shí)現(xiàn)技巧,具有一定參考借鑒價(jià)值,需要的朋友可以參考下2015-08-08JavaScript基礎(chǔ)之文件上傳與下載的實(shí)現(xiàn)詳解
這篇文章主要為大家詳細(xì)介紹了JavaScript實(shí)現(xiàn)文件上傳與下載功能的相關(guān)資料,文中的示例代碼講解詳細(xì),具有一定的借鑒價(jià)值,感興趣的小伙伴可以學(xué)習(xí)一下2023-01-01用jscript實(shí)現(xiàn)新建和保存一個(gè)word文檔
用jscript實(shí)現(xiàn)新建和保存一個(gè)word文檔...2007-06-06TypeScript調(diào)整數(shù)組元素順序算法
數(shù)組類型在TS中可以使用多種方式,比較靈活,下面這篇文章主要給大家介紹了關(guān)于TypeScript調(diào)整數(shù)組元素順序算法的相關(guān)資料,文中通過實(shí)例代碼介紹的非常詳細(xì),需要的朋友可以參考下2022-04-04bootstrap select2插件用ajax來獲取和顯示數(shù)據(jù)的實(shí)例
今天小編就為大家分享一篇bootstrap select2插件用ajax來獲取和顯示數(shù)據(jù)的實(shí)例,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧2018-08-082016年最熱門的15 款代碼語(yǔ)法高亮工具,美化你的代碼
無論是代碼高亮還是語(yǔ)法高亮對(duì)整個(gè)程序來說都非常重要,可以給人眼前一亮的感覺,增加用戶體驗(yàn)度,下面通過本文給大家介紹2016年最熱門的Javascript代碼高亮顯示腳本及代碼語(yǔ)法高亮工具,對(duì)js代碼高亮,代碼語(yǔ)法高亮相關(guān)知識(shí)感興趣的朋友一起學(xué)習(xí)吧2016-01-01ECharts柱狀圖關(guān)閉鼠標(biāo)hover時(shí)的高亮樣式詳解
為了方便使用,echarts的餅圖中給加入了默認(rèn)的hover高亮效果,下面這篇文章主要給大家介紹了關(guān)于ECharts柱狀圖關(guān)閉鼠標(biāo)hover時(shí)的高亮樣式的相關(guān)資料,需要的朋友可以參考下2023-04-04利用JavaScript實(shí)現(xiàn)仿QQ個(gè)人資料卡效果
這篇文章主要為大家詳細(xì)介紹了如何利用HTML+CSS+JavaScript實(shí)現(xiàn)仿QQ個(gè)人資料卡效果,文中的示例代碼講解詳細(xì),感興趣的可以動(dòng)手嘗試一下2022-08-08