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

首頁 > 網站 > 軟件應用 > 正文

關于CKeditor的非主流個性應用的設置

2024-09-06 19:16:39
字體:
來源:轉載
供稿:網友
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(將&<>分別替換成了&amp;&lt;&gt;),確實是一個非常棒的方法,這樣就不需要對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
国内精品国产三级国产在线专| 成人a免费视频| 丰满岳妇乱一区二区三区| 国产精品久久综合av爱欲tv| 国产盗摄xxxx视频xxx69| 精品久久久久久久久久国产| 色噜噜狠狠狠综合曰曰曰88av| 国产精品久久久久av免费| 国产精品一区二区久久久| 日韩欧美aⅴ综合网站发布| 91精品久久久久久久久久久久久久| 成人久久一区二区| 搡老女人一区二区三区视频tv| 久久免费视频这里只有精品| 久久九九全国免费精品观看| 欧美国产日韩中文字幕在线| 国产美女久久精品香蕉69| 欧美成aaa人片免费看| 69视频在线播放| 国产欧美日韩专区发布| 国产98色在线| 国产一区二区三区久久精品| 91在线观看免费高清完整版在线观看| 欧美大片欧美激情性色a∨久久| 精品女同一区二区三区在线播放| 亚洲国产成人精品久久久国产成人一区| 国产99在线|中文| 欧美不卡视频一区发布| 亚洲一区精品电影| 亚洲在线一区二区| 欧美激情亚洲视频| 欧美激情在线视频二区| 亚洲激情成人网| 在线电影欧美日韩一区二区私密| 亚洲欧洲午夜一线一品| 国产欧美日韩精品丝袜高跟鞋| 欧美性色xo影院| 国产精品18久久久久久首页狼| 自拍亚洲一区欧美另类| 国内精品国产三级国产在线专| 欧美第一黄网免费网站| 中文字幕亚洲综合久久筱田步美| 精品福利免费观看| 91禁外国网站| 国产精品综合久久久| 992tv成人免费视频| 91精品美女在线| 亚洲成色www8888| 中文字幕亚洲欧美日韩在线不卡| 久久99久久久久久久噜噜| 成人免费观看网址| 国产精品一久久香蕉国产线看观看| 97在线视频精品| 国产日韩欧美中文| 欧美香蕉大胸在线视频观看| 亚洲香蕉伊综合在人在线视看| 欧美国产日韩xxxxx| 国产欧美日韩中文字幕| 黑人巨大精品欧美一区二区免费| 国内精品国产三级国产在线专| 亚洲国产毛片完整版| 国内精品久久久久久影视8| 久久久久999| 精品国产31久久久久久| 日韩欧美在线一区| 日韩网站免费观看高清| 亚洲国产欧美精品| 亚洲激情国产精品| 国产亚洲欧洲高清| 亚洲影院高清在线| 欧美成人合集magnet| 欧美在线国产精品| 精品国产乱码久久久久久婷婷| 欧美亚洲午夜视频在线观看| 国产美女扒开尿口久久久| 国产精品夜色7777狼人| 日韩暖暖在线视频| 亚洲电影第1页| 国产精品女主播视频| 国产精品2018| 91精品国产成人www| 国产亚洲欧美日韩一区二区| 在线视频日韩精品| 国产精品一二区| 亚洲精品自产拍| 欲色天天网综合久久| 国产精品久久久久999| 91在线直播亚洲| 日韩欧美精品网址| 亚洲免费电影一区| 国产精品国产三级国产专播精品人| 久久精品美女视频网站| 91精品国产免费久久久久久| 中文字幕欧美日韩| 精品国产一区二区三区久久狼黑人| 亚洲国内精品在线| 欧美激情亚洲精品| 成人有码视频在线播放| 精品久久在线播放| 国产91精品最新在线播放| 亚洲韩国欧洲国产日产av| 欧美一级视频一区二区| 日韩天堂在线视频| 日韩亚洲精品视频| 欧美网站在线观看| 91性高湖久久久久久久久_久久99| 国产精品专区一| 久久久久国产精品免费网站| 91精品国产综合久久香蕉的用户体验| 久久免费精品视频| 欧美精品18videos性欧美| 欧美性xxxxx极品娇小| 亚洲白虎美女被爆操| 国产精品久久久久久久久久小说| 欧洲s码亚洲m码精品一区| 亚洲欧美成人网| 欧美精品18videosex性欧美| 欧美大成色www永久网站婷| 日韩精品免费在线| 亚洲午夜激情免费视频| 国产97在线播放| 欧美激情精品久久久久久大尺度| 91av视频在线| 欧美激情精品久久久| 欧美一级在线亚洲天堂| 国产精品国产亚洲伊人久久| 欧美性猛交视频| 成人黄色av免费在线观看| 欧美成人久久久| 久久久久亚洲精品国产| 久久九九全国免费精品观看| 中文字幕日本欧美| 91深夜福利视频| 九九热在线精品视频| 日韩免费在线看| 日韩精品免费观看| 欧美精品videofree1080p| 91在线无精精品一区二区| 久久国产精品视频| 亚洲精品国产免费| 亚洲www永久成人夜色| 精品国产91久久久久久| 国内精品免费午夜毛片| 日韩av影视综合网| 国内精品久久久久久久久| 欧美一级淫片videoshd| 91成人在线视频| 久久久久久久久久国产精品| 一区二区在线免费视频| 国产做受高潮69| 欧美精品久久一区二区| 欧美激情欧美狂野欧美精品| 久久伊人精品视频| 国产精品久久久久久亚洲影视| 亚洲精品福利在线观看| 清纯唯美日韩制服另类| 亚洲自拍偷拍一区| 日本19禁啪啪免费观看www| 国产精品激情av电影在线观看| 亚洲视频精品在线| 亚洲成人久久一区| 精品国产一区二区三区久久| 91美女片黄在线观| 欧美极品美女电影一区|