給FCKeditor添加自定義按鈕的方法
還思 于 7個(gè)月前,點(diǎn)擊735次,評(píng)論1篇
FCKeditor是一款非常流行的WEB可視化編輯器,其程序的的成熟度也非常高、功能豐富,但是再豐富也無法完全滿足我們的實(shí)際要求,有時(shí)我們還是需要增加一些自己的功能。但FCKeditor的程序結(jié)構(gòu)還是比較復(fù)雜的,對(duì)JS不是很了解的人很難對(duì)其靈活定制,本文就如何為FCKeditor的工具條增加一個(gè)打開我的像冊(cè)的自定義按鈕做一介紹。 先看看效果: 
增加按鈕有以下幾步:
1、為按鈕增加圖片: FCK的所有按鈕圖片是存放在一個(gè)圖片文件里的,這一點(diǎn)比較獨(dú)特,文件存放在相應(yīng)皮膚目錄下,如:/FCK/skins/silever/fck_strip.gif。通過Fireworks或Phtoshop打開該文件可以發(fā)現(xiàn)一個(gè)很長的圖片,里面包含所有按鈕的圖片,現(xiàn)在您可以在該圖片的最下面增加您自定義的按鈕,注意,每個(gè)按鈕的尺寸是16*16px。
2、為按鈕增加功能代碼: 增加按鈕需要對(duì)FCK/editor/js目錄中的兩個(gè)核心文件進(jìn)行修改:fckeditorcode_gecko.js和fckeditorcode_ie.js,前者是使用于gecko核心的瀏覽器如Firefox等,而后者應(yīng)用于以IE為核心的瀏覽器如MyIE(傲游)等,這兩個(gè)文件大體是相似的,僅有微小差別,在此我們基本無須擔(dān)心。 修改的方法非常簡單,基本是一個(gè)照葫蘆畫瓢的過程,首先我們找一個(gè)與我們將要添加的按鈕功能相似的一個(gè)按鈕,這里我們選擇了Newpage,這是一個(gè)清空編輯器以備新建一個(gè)文件的按鈕。首先我們修改fckeditorcode_ie.js,fckeditorcode_gecko.js直接復(fù)制更改的代碼就可以了。
打開fckeditorcode_ie.js,這里需要說明的是,fckeditorcode_ie.js是多個(gè)文件合并經(jīng)過代碼優(yōu)化的(即去掉了大部分換行、空格、注釋等)不是很容易閱讀,而且這樣一百多K的JS文件用Dreamweaver、ZDE等工具打開后CPU立刻升至100%,相信計(jì)算機(jī)就變成癡呆一樣了,經(jīng)過一翻比較,發(fā)現(xiàn)曾被我認(rèn)為一文不值的Golive竟然可以輕松打開該文件并快速編輯!不管你用什么軟件反正能打開并編輯就行了。以關(guān)鍵詞Newpage進(jìn)行查找,你會(huì)發(fā)現(xiàn)一個(gè)按鈕的功能定義分三大部分:
A、功能原型 // 按鈕功能原型 var FCKNewPageCommand=function(){this.Name='NewPage';}; FCKNewPageCommand.prototype.Execute=function(){FCKUndo.SaveUndoStep();FCK.SetHTML('');FCKUndo.Typing=true;}; FCKNewPageCommand.prototype.GetState=function(){return FCK_TRISTATE_OFF;};
var FCKMyAlbumCommand=function(){this.Name='DISPLAY: none';}; FCKMyAlbumCommand.prototype.Execute=function(){if(typeof(parent.showMyAlbum)=="function"){parent.showMyAlbum(FCK);}else{alert(FCKLang.NoAlbum);}}; FCKMyAlbumCommand.prototype.GetState=function(){return FCK_TRISTATE_OFF;};
B、功能的實(shí)例化 case 'NewPage':B=new FCKNewPageCommand();break; case 'MyAlbum':B=new FCKMyAlbumCommand();break;
C、按鈕的顯示 case 'NewPage':B=new FCKToolbarButton('NewPage',FCKLang.NewPage,null,null,true,null,4);break; case 'MyAlbum':B=new FCKToolbarButton('MyAlbum',FCKLang.MyAlbum,null,null,true,null,67);break;
上面代碼中第一部分是Newpage的原代碼,后一部分是我們自定義的代碼,您一看應(yīng)該明白怎么回事了吧?僅紅色部分和名稱不同而已!而紅色部分就是我們的自定義功能。 FCKLang是語言包對(duì)象,您只要打開FCK/editor/lang/下面的相應(yīng)語言包添加相應(yīng)的名稱屬性就可以了,比如:MyAlbum打開我的像冊(cè)。注意大小寫!至此我們的添加工作已完成。
|