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

首頁 > 開發 > 綜合 > 正文

關于HTML編輯器CKeditor的非主流個性應用的設置

2024-07-21 02:53:38
字體:
來源:轉載
供稿:網友
因為我的網站需要一個編輯器,所以用周末時間研究了一下CKeditor,終于最終修改成了合適的樣子。
 
CKeditor,以前叫FCKeditor,已經使用過好多年了,功能自然沒的說。最近升級到3.0版,好像重寫了代碼,所以構建的方式也有了些變化,應該說是更簡單了。

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


部署: 
將CKeditor下載下來,解壓網站/ckeditor/下面(當然名字可以修改,只是需要修改相應config文件來設置新路徑) 

調用: 
在頁面的head中調用 
  <script type="text/javascript" src="/ckeditor/ckeditor.js"></script> 
然后在需要編輯器的地方放置一下代碼: 
復制代碼代碼如下:

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


搞定,就這么簡單,CKEDITOR.replace('Text')就是創建編輯器的代碼,CKEDITOR.replace()方法中還可以設置編輯器的樣式,設置如下 
復制代碼代碼如下:

var editor = CKEDITOR.replace( 'Text', 

language:'zh-cn',//簡體中文 
toolbar ://工具欄設置 

['Source'], 
'/', 
['Cut','Copy','Paste','PasteText','PasteFromWord'], 
['Bold','Italic','Underline','Strike','-','Subscript','Superscript'], 
['TextColor','BGColor'], 

}); 

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

復制代碼代碼如下:

CKEDITOR.editorConfig = function( config ) 

// Define changes to default configuration here. For example: 
config.language = 'zh-cn'; //配置語言 
//config.uiColor = '#FFF'; //背景顏色 
config.width = 500; //寬度 
config.height = 400; //高度 
config.skin='v2'; //設置編輯器的風格,不太喜歡現在的樣子,還是喜歡v2版本的樣子,干凈、清爽。 
//工具欄 
config.toolbar = 

['Source'], 
'/', 
['Cut','Copy','Paste','PasteText','PasteFromWord'], 
['Bold','Italic','Underline','Strike','-','Subscript','Superscript'], 
['TextColor','BGColor'], 

}; 

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

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

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

//在/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 ) ; 

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

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

現在在打開編輯器的圖片、鏈接、flash,窗口就多了一個上傳選項卡,可以選擇上傳,還提供了瀏覽功能。 
因為涉及到文件夾的訪問權限,功能與我的網站需求不符,所以我沒有使用它提供的默認上傳,對他進行了修改。 
上傳方式的修改 
我的圖片服務器是image.tiyu.cc而網站的服務器是http://www.49028c.com/,也不需要它提供的瀏覽功能,而且除了圖片上傳,不允許上傳其他的文件。 
這樣就需要有三個地方需要修改,1.修改默認上傳2.取消瀏覽功能3.取消文件、flash上傳功能。 
CKeditor的上傳路徑設置在/CKfinder/ckfinder.js中,有一項設置是CKFinder.SetupCKEditor,它的下面有以下代碼,可以設置是否需要圖片、文件、flash的瀏覽路徑以及上傳路徑。 
復制代碼代碼如下:

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

根據CKeditor是根據上傳路徑的有無來控制是否顯示相應的上傳標簽,瀏覽按鈕也是。 
根據上面的需求,設置如下: 
復制代碼代碼如下:

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

設置到這里再次打開編輯器的相應窗口就會發現除了圖片上傳按鈕外其他的瀏覽上傳都隱藏掉了。

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

編輯器的接收是通過一個方法實現的,具體如下: 
  CKEDITOR.tools.callFunction(fnID, 'FileUrl', 'Message');</script> 

其中fnID是調用的實際方法的編號,不同的瀏覽器,CKeditor調用不同的方法。 

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

<script type="text/javascript">window.parent.CKEDITOR.tools.callFunction(fnID, 'http://www.49028c.com/image.jpg', '上傳成功');</script> 

FileUrl、Message,可以只有一個,也可以同時存在。Message主要應用于上傳失敗時的提示信息。 

關于fnID,這個具體的說明不是很清楚,但是通過代碼發現FF瀏覽器它的值是2,其他的瀏覽器是1,通過這個可以得出結論是,通過它來告知CKeditor來調用哪個方法接受上傳反饋信息。 

這個值,可以通過我們自己的程序去獲得。但是更好的方式是CKeditor給我們提供的值,當我們設置editorObj.config.filebrowserImageUploadUrl = "新地址"時CKeditor會自動為我們增加幾個個url參數: 
新地址?CKEditor=Text&CKEditorFuncNum=2&langCode=zh-cn 
其中CKEditorFuncNum就是我們需要的fnID,我們可以直接獲取到,然后反饋回來就好了。 

如果選擇跨域上傳,只需要在當前域(http://www.49028c.com/)設置一個GetFile.aspx他有三個參數,分別是接受fnID,FileUrl、Message這三個值,在我們的editorObj.config.filebrowserImageUploadUrl中設置成http://Image.vevb.com/upfile.aspx?backUrl=http://www.49028c.com/GetFile.aspx,就可以了,image.vevb.com域的upfile.aspx接受到文件,處理完成之后: 
復制代碼代碼如下:

ImageUrl="http://image.vevb.com/UpFile/2009/11/1/2009111201346_695.jpg" 
Message="根據錯誤與否,設置,沒有錯誤可以為空" 
CKEditorFuncNum=request("CKEditorFuncNum") 
response.Redirect("http://www.49028c.com/GetFile.php?ImageUrl="+ ImageUrl + "&Message=" + Message + "&CKEditorFuncNum=" + CKEditorFuncNum) 


搞定,收工,睡覺,做個好夢。


注:相關教程知識閱讀請移步到編輯器頻道。
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
欧美成人午夜免费视在线看片| 国产成人精品久久久| 国产日韩中文字幕在线| 国产精品亚洲综合天堂夜夜| 久久亚洲欧美日韩精品专区| 欧美精品在线极品| 亚洲一区二区三区久久| 亚洲国产女人aaa毛片在线| 日本免费久久高清视频| 日韩精品在线看| 欧美黑人又粗大| 伊人久久综合97精品| 亚洲精品视频中文字幕| 欧美日韩免费区域视频在线观看| 亚洲视频在线免费观看| 在线a欧美视频| 日韩av免费看| 最近2019免费中文字幕视频三| 欧美一级片免费在线| 久久精品国产一区二区三区| 中文字幕不卡在线视频极品| 91久久综合亚洲鲁鲁五月天| 国产精品一区久久久| 亚洲第一精品夜夜躁人人爽| 日韩美女在线看| 久久国产精彩视频| 中文字幕日韩专区| 久久精品男人天堂| 米奇精品一区二区三区在线观看| 成人欧美在线视频| 国产精品一二三在线| 精品视频在线播放色网色视频| 欧美大全免费观看电视剧大泉洋| 欧美高清在线播放| 亚洲久久久久久久久久久| 九九热99久久久国产盗摄| 久久精品国产91精品亚洲| 国产亚洲精品久久久久动| 在线观看日韩专区| 国产一区二区黄| 456亚洲影院| 久久久国产精彩视频美女艺术照福利| 欧美伊久线香蕉线新在线| 91av视频在线观看| 久久精品国产久精国产思思| 亚洲xxxxx电影| 日韩人在线观看| 亚洲精品一二区| 日本成人精品在线| 日韩黄色在线免费观看| 热99精品里视频精品| 亚洲欧美日韩精品久久| 国产免费亚洲高清| 51精品国产黑色丝袜高跟鞋| 成人精品aaaa网站| 久久99精品视频一区97| 欧美精品999| www.日韩.com| 国产成人亚洲综合青青| 日韩电影免费观看中文字幕| 亚洲电影免费在线观看| 91网站在线免费观看| 日韩精品极品在线观看| 欧美电影在线观看| 亚洲国产精品推荐| 日韩免费在线观看视频| 欧美亚洲成人免费| 精品欧美国产一区二区三区| 91精品国产色综合久久不卡98| 亚洲自拍偷拍区| 2019中文字幕免费视频| 中文字幕国产精品久久| 91成人在线观看国产| 在线丨暗呦小u女国产精品| 中文字幕亚洲欧美日韩在线不卡| 亚洲精品国产suv| 97精品国产91久久久久久| 久久男人资源视频| 国产精品综合网站| 日韩电影大片中文字幕| 国产精品视频yy9099| 国产精品美女在线| 亚洲伊人久久大香线蕉av| 日韩美女激情视频| 精品亚洲精品福利线在观看| 欧美成人一区在线| 精品一区二区三区电影| 国产精品入口免费视频一| 欧美中文在线免费| 日韩有码在线电影| 欧美孕妇毛茸茸xxxx| 国产91色在线|| 日韩少妇与小伙激情| 亚洲石原莉奈一区二区在线观看| 成人精品久久久| 国产精品久久久久久久久久三级| 最新国产精品亚洲| 久久99热精品| 久久精品久久久久久| 97久久精品人人澡人人爽缅北| 国产精品视频免费在线| 亚洲精品久久久久中文字幕二区| 日韩一区二区av| 久久成年人免费电影| 日韩av免费在线| 成人欧美在线观看| 日韩欧美国产网站| 国产欧美精品va在线观看| 久久久久久久久久久91| 亚洲欧美激情精品一区二区| 亚洲a∨日韩av高清在线观看| 国产精品免费视频久久久| 亚洲色图第一页| 国产91|九色| 日韩av手机在线观看| 日韩国产在线看| 亚洲国产成人精品女人久久久| 欧美夫妻性生活xx| 欧美黑人国产人伦爽爽爽| 国产91精品在线播放| 自拍偷拍免费精品| 国产精品久久久久久久久男| 亚洲第一黄色网| 欧美有码在线观看| 精品视频在线播放| 成人有码视频在线播放| 国产一区二区欧美日韩| 亚洲国产精品久久精品怡红院| 亚洲最新av在线| 中文字幕精品一区久久久久| 日韩一区二区三区xxxx| 欧美另类暴力丝袜| 91久久精品一区| 欧美激情小视频| 日韩极品精品视频免费观看| 国产精品毛片a∨一区二区三区|国| 国产精品白嫩美女在线观看| 欧美日韩aaaa| 26uuu亚洲国产精品| 国产成人一区二区三区小说| 高清欧美性猛交xxxx黑人猛交| 成年无码av片在线| 色青青草原桃花久久综合| 亚洲最大福利网| 主播福利视频一区| 91视频-88av| 狠狠躁夜夜躁人人爽天天天天97| 九九热精品在线| 亚洲精品综合久久中文字幕| 91精品国产91久久| 国产精品久久久久久久9999| 国产成人avxxxxx在线看| 孩xxxx性bbbb欧美| 麻豆精品精华液| 久久久国产一区二区| 国产精品久久在线观看| 亚洲国产成人久久综合| 欧美性生活大片免费观看网址| 97视频网站入口| 国产精品福利在线观看网址| 国产69久久精品成人| 欧美在线观看网址综合| 久99久在线视频| 国产午夜精品麻豆|