主頁(yè) > 知識(shí)庫(kù) > 關(guān)于CKeditor的非主流個(gè)性應(yīng)用的設(shè)置

關(guān)于CKeditor的非主流個(gè)性應(yīng)用的設(shè)置

熱門標(biāo)簽:靈聲智能電話機(jī)器人招聘 興化400電話辦理多少錢 株洲外呼營(yíng)銷系統(tǒng)有哪些 企業(yè)電話機(jī)器人辦理 四平電話機(jī)器人哪家好 長(zhǎng)春銷售外呼系統(tǒng)業(yè)務(wù) 長(zhǎng)春防封卡電銷卡套餐 智能電銷機(jī)器人真的好嗎 天津電銷卡外呼系統(tǒng)線路
CKeditor,以前叫FCKeditor,已經(jīng)使用過(guò)好多年了,功能自然沒(méi)的說(shuō)。最近升級(jí)到3.0版,好像重寫了代碼,所以構(gòu)建的方式也有了些變化,應(yīng)該說(shuō)是更簡(jiǎn)單了。

相關(guān)地址:
官方網(wǎng)站:http://ckeditor.com/
下載地址:http://ckeditor.com/download
CKfinder:http://ckfinder.com/ 用于上傳的插件(有四種語(yǔ)言版本,根據(jù)需要下載)


部署:
將CKeditor下載下來(lái),解壓網(wǎng)站/ckeditor/下面(當(dāng)然名字可以修改,只是需要修改相應(yīng)config文件來(lái)設(shè)置新路徑)

調(diào)用:
在頁(yè)面的head中調(diào)用
  script type="text/javascript" src="/ckeditor/ckeditor.js">/script>
然后在需要編輯器的地方放置一下代碼:
復(fù)制代碼 代碼如下:

textarea cols="80" id="Text" name="Text" rows="10">這里是默認(rèn)值,修改文本的內(nèi)容是放在這里。html需要進(jìn)行HTMLEncode編碼/textarea>
script type="text/javascript">
var editor = CKEDITOR.replace('Text');
/script>


搞定,就這么簡(jiǎn)單,CKEDITOR.replace('Text')就是創(chuàng)建編輯器的代碼,CKEDITOR.replace()方法中還可以設(shè)置編輯器的樣式,設(shè)置如下
復(fù)制代碼 代碼如下:

var editor = CKEDITOR.replace( 'Text',
{
language:'zh-cn',//簡(jiǎn)體中文
toolbar ://工具欄設(shè)置
[
['Source'],
'/',
['Cut','Copy','Paste','PasteText','PasteFromWord'],
['Bold','Italic','Underline','Strike','-','Subscript','Superscript'],
['TextColor','BGColor'],
]
});

具體的設(shè)置有很多,具體的可以查看他的幫助:http://docs.cksource.com/ckeditor_api/symbols/CKEDITOR.config.html
這個(gè)設(shè)置可以在/ckeditor/config.js中設(shè)置,在這里設(shè)置之后,就修改了編輯器的默認(rèn)默認(rèn)設(shè)置,而上面設(shè)置只應(yīng)用于當(dāng)前編輯器。
具體的設(shè)置方法如下

復(fù)制代碼 代碼如下:

CKEDITOR.editorConfig = function( config )
{
// Define changes to default configuration here. For example:
config.language = 'zh-cn'; //配置語(yǔ)言
//config.uiColor = '#FFF'; //背景顏色
config.width = 500; //寬度
config.height = 400; //高度
config.skin='v2'; //設(shè)置編輯器的風(fēng)格,不太喜歡現(xiàn)在的樣子,還是喜歡v2版本的樣子,干凈、清爽。
//工具欄
config.toolbar =
[
['Source'],
'/',
['Cut','Copy','Paste','PasteText','PasteFromWord'],
['Bold','Italic','Underline','Strike','-','Subscript','Superscript'],
['TextColor','BGColor'],
]
};

數(shù)據(jù)提交
到這里我們已經(jīng)基本上設(shè)置好了。如果調(diào)用的話后臺(tái)可以使用request["text"]來(lái)獲取編輯器的文本。
在fckeditor(Ver 2.0)中時(shí),它提供了一個(gè)web控件,可以直接使用,但是在3.x中好像沒(méi)有提供,好在我用的Asp.net Mvc所以有沒(méi)有的對(duì)我來(lái)說(shuō)沒(méi)有任何問(wèn)題。
提到上面的一句是因?yàn)?,默認(rèn)的asp.net是禁止上傳帶有html標(biāo)簽的文本的,當(dāng)然可以通過(guò)修改頁(yè)面的配置來(lái)實(shí)現(xiàn),但是在fckeditor(Ver 2.0)中他在提交數(shù)據(jù)前對(duì)內(nèi)容進(jìn)行了HTMLEncode(將>分別替換成了lt;gt;),確實(shí)是一個(gè)非常棒的方法,這樣就不需要對(duì)asp.net的默認(rèn)設(shè)置進(jìn)行修改。
但是在CKeditor中默認(rèn)提交就是將原始的數(shù)據(jù)直接post了,后來(lái)通過(guò)以前老版本的代碼發(fā)現(xiàn)其實(shí)CKeditor提供了一個(gè)方法可以進(jìn)行HTMLEncode,它就是CKEDITOR.tools.htmlEncode(string),如果直接使用form表填submit就沒(méi)有辦法實(shí)現(xiàn)了,所以只能采用JavaScript進(jìn)行提交。我的選擇是使用jQuery的ajax方式提交。代碼如下:
復(fù)制代碼 代碼如下:

$(function(){
$("#btSubmit").click(function(){//$("#btSubmit")獲取的是提交按鈕,這里綁定提交按鈕的click事件
var oEditor = CKEDITOR.instances.Text;//獲得編輯器對(duì)象
var text = oEditor.getData();//獲取編輯器的數(shù)據(jù)
text = CKEDITOR.tools.htmlEncode(text);//進(jìn)行HTMLEncode編碼
$.post("PostUrl",{Text:text},callback);//提交數(shù)據(jù),具體的調(diào)用方式和返回類型請(qǐng)查閱jQuery的幫助
function callback(data){}//回調(diào)函數(shù)
});
})

提交到服務(wù)器在進(jìn)行反向的編碼就可以了。
安全性
通過(guò)上面的提交雖然很好,但是繞過(guò)了系統(tǒng)默認(rèn)的安全防御,很容易被提交惡意代碼,所以在服務(wù)器端還需要進(jìn)行安全的驗(yàn)證。
雖然CKeditor提供了驗(yàn)證的設(shè)置方法,但是我沒(méi)有試驗(yàn)成功(Ver2時(shí)代就沒(méi)成功),不曉得他是怎么運(yùn)作的,有時(shí)間好好研究下,代碼如下:
復(fù)制代碼 代碼如下:

//在/ckeditor/config.js文件的CKEDITOR.editorConfig中添加一下代碼
config.protectedSource.push( /\s*iframe[\s\S]*?>/gi ) ; // iframe> tags.
config.protectedSource.push( /\s*frameset[\s\S]*?>/gi ) ; // frameset> tags.
config.protectedSource.push( /\s*frame[\s\S]*?>/gi ) ; // frame> tags.
config.protectedSource.push( /\s*script[\s\S]*?\/script\s*>/gi ) ; // SCRIPT> tags.
config.protectedSource.push( /%[\s\S]*?%>/g ) ; // ASP style server side code
config.protectedSource.push( /\?[\s\S]*?\?>/g ) ; // PHP style server side code
config.protectedSource.push( /(asp:[^\&;]+>[\s|\S]*?\/asp:[^\&;]+>)|(asp:[^\&;]+\/>)/gi ) ;

服務(wù)器端的驗(yàn)證項(xiàng)目跟上面提到的一樣,都是根據(jù)標(biāo)簽名稱來(lái)判斷是否允許提交。
文件上傳
在新版本中文件上傳方式有了很大的改變。它采用CKfinder這個(gè)插件來(lái)實(shí)現(xiàn),首先還是需要下載一個(gè)CKfinder解壓到網(wǎng)站/CKfinder/下面
路徑也可以修改,修改后需要調(diào)用代碼、/CKfinder/config.ascx文件、/CKfinder/ckfinder.js文件
/CKfinder/config.ascx文件需要修改BaseUrl = "/新文件夾名/userfiles/";
/CKfinder/ckfinder.js文件需要修改CKFinder.DEFAULT_BASEPATH = '/新文件夾名/';
調(diào)用方式:
復(fù)制代碼 代碼如下:

textarea cols="80" id="Text" name="Text" rows="10">/textarea>
script type="text/javascript">
var editor = CKEDITOR.replace( 'Text');
CKFinder.SetupCKEditor(editor, '/新文件夾名(或默認(rèn))/');
/script>

現(xiàn)在在打開編輯器的圖片、鏈接、flash,窗口就多了一個(gè)上傳選項(xiàng)卡,可以選擇上傳,還提供了瀏覽功能。
因?yàn)樯婕暗轿募A的訪問(wèn)權(quán)限,功能與我的網(wǎng)站需求不符,所以我沒(méi)有使用它提供的默認(rèn)上傳,對(duì)他進(jìn)行了修改。
上傳方式的修改
我的圖片服務(wù)器是image.tiyu.cc而網(wǎng)站的服務(wù)器是https://www.jb51.net/,也不需要它提供的瀏覽功能,而且除了圖片上傳,不允許上傳其他的文件。
這樣就需要有三個(gè)地方需要修改,1.修改默認(rèn)上傳2.取消瀏覽功能3.取消文件、flash上傳功能。
CKeditor的上傳路徑設(shè)置在/CKfinder/ckfinder.js中,有一項(xiàng)設(shè)置是CKFinder.SetupCKEditor,它的下面有以下代碼,可以設(shè)置是否需要圖片、文件、flash的瀏覽路徑以及上傳路徑。
復(fù)制代碼 代碼如下:

//設(shè)置文件的瀏覽路徑
editorObj.config.filebrowserBrowseUrl = url ;
//設(shè)置圖片的瀏覽路徑
editorObj.config.filebrowserImageBrowseUrl = url + qs + 'type=' + ( imageType || 'Images' ) ;
//設(shè)置flash文件瀏覽路徑
editorObj.config.filebrowserFlashBrowseUrl = url + qs + 'type=' + ( flashType || 'Flash' ) ;
//設(shè)置文件上傳文件地址
editorObj.config.filebrowserUploadUrl = dir + "core/connector/" + ckfinder.ConnectorLanguage + "/connector."
+ ckfinder.ConnectorLanguage + "?command=QuickUploadtype=Files" ;
//設(shè)置圖片文件上傳地址
editorObj.config.filebrowserImageUploadUrl = dir + "core/connector/" + ckfinder.ConnectorLanguage + "/connector."
+ ckfinder.ConnectorLanguage + "?command=QuickUploadtype=" + ( imageType || 'Images' ) ;
//設(shè)置flash文件上傳地址
editorObj.config.filebrowserFlashUploadUrl = dir + "core/connector/" + ckfinder.ConnectorLanguage + "/connector."
+ ckfinder.ConnectorLanguage + "?command=QuickUploadtype=" + ( flashType || 'Flash' ) ;

根據(jù)CKeditor是根據(jù)上傳路徑的有無(wú)來(lái)控制是否顯示相應(yīng)的上傳標(biāo)簽,瀏覽按鈕也是。
根據(jù)上面的需求,設(shè)置如下:
復(fù)制代碼 代碼如下:

//設(shè)置文件的瀏覽路徑
editorObj.config.filebrowserBrowseUrl = "";
//設(shè)置圖片的瀏覽路徑
editorObj.config.filebrowserImageBrowseUrl = "";
//設(shè)置flash文件瀏覽路徑
editorObj.config.filebrowserFlashBrowseUrl = "";
//設(shè)置文件上傳文件地址
editorObj.config.filebrowserUploadUrl = "";
//設(shè)置圖片文件上傳地址
editorObj.config.filebrowserImageUploadUrl = "新地址";
//設(shè)置flash文件上傳地址
editorObj.config.filebrowserFlashUploadUrl = "";

設(shè)置到這里再次打開編輯器的相應(yīng)窗口就會(huì)發(fā)現(xiàn)除了圖片上傳按鈕外其他的瀏覽上傳都隱藏掉了。

創(chuàng)建新的上傳文件
具體步驟是,首先創(chuàng)建一個(gè)新的上傳接收文件,接受并保存上傳的文件,然后將文件的路徑反饋給編輯器。

編輯器的接收是通過(guò)一個(gè)方法實(shí)現(xiàn)的,具體如下:
  CKEDITOR.tools.callFunction(fnID, 'FileUrl', 'Message');/script>

其中fnID是調(diào)用的實(shí)際方法的編號(hào),不同的瀏覽器,CKeditor調(diào)用不同的方法。

我們只需要調(diào)用上面的方法就可以了,具體上傳成功后,在頁(yè)面上輸出一下代碼

script type="text/javascript">window.parent.CKEDITOR.tools.callFunction(fnID, 'https://www.jb51.net/image.jpg', '上傳成功');/script>

FileUrl、Message,可以只有一個(gè),也可以同時(shí)存在。Message主要應(yīng)用于上傳失敗時(shí)的提示信息。

關(guān)于fnID,這個(gè)具體的說(shuō)明不是很清楚,但是通過(guò)代碼發(fā)現(xiàn)FF瀏覽器它的值是2,其他的瀏覽器是1,通過(guò)這個(gè)可以得出結(jié)論是,通過(guò)它來(lái)告知CKeditor來(lái)調(diào)用哪個(gè)方法接受上傳反饋信息。

這個(gè)值,可以通過(guò)我們自己的程序去獲得。但是更好的方式是CKeditor給我們提供的值,當(dāng)我們?cè)O(shè)置editorObj.config.filebrowserImageUploadUrl = "新地址"時(shí)CKeditor會(huì)自動(dòng)為我們?cè)黾訋讉€(gè)個(gè)url參數(shù):
新地址?CKEditor=TextCKEditorFuncNum=2langCode=zh-cn
其中CKEditorFuncNum就是我們需要的fnID,我們可以直接獲取到,然后反饋回來(lái)就好了。

如果選擇跨域上傳,只需要在當(dāng)前域(https://www.jb51.net/)設(shè)置一個(gè)GetFile.aspx他有三個(gè)參數(shù),分別是接受fnID,F(xiàn)ileUrl、Message這三個(gè)值,在我們的editorObj.config.filebrowserImageUploadUrl中設(shè)置成http://Image.jb51.net/upfile.aspx?backUrl=https://www.jb51.net/GetFile.aspx,就可以了,image.jb51.net域的upfile.aspx接受到文件,處理完成之后:
復(fù)制代碼 代碼如下:

ImageUrl="http://image.jb51.net/UpFile/2009/11/1/2009111201346_695.jpg"
Message="根據(jù)錯(cuò)誤與否,設(shè)置,沒(méi)有錯(cuò)誤可以為空"
CKEditorFuncNum=request("CKEditorFuncNum")
response.Redirect("https://www.jb51.net/GetFile.php?ImageUrl="+ ImageUrl + "Message=" + Message + "CKEditorFuncNum=" + CKEditorFuncNum)


搞定,收工,睡覺(jué),做個(gè)好夢(mèng)。

您可能感興趣的文章:
  • CKEditor/FCKEditor 使用 CKeditor 3.0.1 快速使用教程(含插入圖片)
  • 解決FCKEditor在IE10、IE11下的不兼容問(wèn)題
  • FCKeditor使用方法(FCKeditor_2.6.3)詳細(xì)使用說(shuō)明
  • asp.net+FCKeditor上傳圖片顯示叉叉圖片無(wú)法顯示的問(wèn)題的解決方法
  • 修改fckeditor的文件上傳功能步驟
  • ckeditor的使用和配置方法分享
  • ASP FCKeditor在線編輯器使用方法
  • 整合ckeditor+ckfinder,解決上傳文件路徑問(wèn)題
  • FckEditor 配置手冊(cè)中文教程詳細(xì)說(shuō)明
  • asp.net CKEditor和CKFinder的應(yīng)用
  • PHP CKEditor 上傳圖片實(shí)現(xiàn)代碼
  • CKEditor網(wǎng)頁(yè)編輯器 中文使用說(shuō)明
  • FCKeditor2.3 For PHP 詳細(xì)整理的使用參考
  • javascript獲取ckeditor編輯器的值(實(shí)現(xiàn)代碼)
  • asp.net ckeditor編輯器的使用方法
  • 通過(guò)Fckeditor把圖片上傳到獨(dú)立圖片服務(wù)器的方法
  • asp中的ckEditor的詳細(xì)配置小結(jié)
  • CKEditor4配置與開發(fā)詳細(xì)中文說(shuō)明文檔

標(biāo)簽:運(yùn)城 新疆 貴港 石嘴山 黑龍江 漯河 巴彥淖爾 青海

巨人網(wǎng)絡(luò)通訊聲明:本文標(biāo)題《關(guān)于CKeditor的非主流個(gè)性應(yīng)用的設(shè)置》,本文關(guān)鍵詞  關(guān)于,CKeditor,的,非,主流,;如發(fā)現(xiàn)本文內(nèi)容存在版權(quán)問(wèn)題,煩請(qǐng)?zhí)峁┫嚓P(guān)信息告之我們,我們將及時(shí)溝通與處理。本站內(nèi)容系統(tǒng)采集于網(wǎng)絡(luò),涉及言論、版權(quán)與本站無(wú)關(guān)。
  • 相關(guān)文章
  • 下面列出與本文章《關(guān)于CKeditor的非主流個(gè)性應(yīng)用的設(shè)置》相關(guān)的同類信息!
  • 本頁(yè)收集關(guān)于關(guān)于CKeditor的非主流個(gè)性應(yīng)用的設(shè)置的相關(guān)信息資訊供網(wǎng)民參考!
  • 企业400电话

    智能AI客服机器人
    15000

    在线订购

    合计11份范本:公司章程+合伙协议+出资协议+合作协议+股权转让协议+增资扩股协议+股权激励+股东会决议+董事会决议

    推薦文章