性能
首先,FCKEDITOR的性能是非常好的,用戶只需很少的時間就可以載入FCKEDITOR所需文件.對于其他在線編輯器來 說,這幾乎是個很難解決的難題,因為在開啟編輯器時需要裝載太多的文件.比如CUTEEDITOR,雖然功能比FCKEDITOR還要強大,可是,它本身也夠龐大了,至于FREETEXTBOX等,其易用性與FCKEDITOR相比,尚有差距,可以說,FCKEDITOR是一個別具匠心的在線編輯器,它里 面融入了作者高深的面向對象的JAVASCRIPT功力,集易用性與強大的功能與一體.
.與編輯器相關的所有圖像,腳本以及調用頁
.語言文件
.編輯器的皮膚文件
.工具樣的貼圖等
這些將導致在服務器和客戶端間產(chǎn)生相當?shù)牧髁?如果有許多文件被調用,那么即便每個文件很小.也會讓用戶等得不耐煩.
在2.0版中,開發(fā)人員有兩種方法來解決這個問題.
那就是指定裝載順序和腳本壓縮
裝載順序
從2.0版開始,編輯器按以下步驟裝載資源:
.基本頁(就是編輯器所在頁)以及裝入編輯器的JS腳本
.用來建立編輯器的腳本
.編輯器的語言和皮膚.
.建立編輯器.
.載入預置的編輯文檔內容.
.從現(xiàn)在開始,用戶可以閱讀和編輯文檔了,不過,拖拽支持以及工具欄都是不可用的
.載入編輯器引擎腳本
.建立工具欄,并且可用
.從現(xiàn)在開始,編輯器的所有功能都已經(jīng)完整
.載入工具欄圖標
腳本壓縮
在打包任何新版本時,編輯器的JS腳本將會進行預處理.預處理步驟如下:
.移除所有代碼注釋
.移除所有無用的空白字符.
.將腳本合并成幾個文件
使用上面的方法,我們可以將腳本文件的大小壓縮到原來的50%.
壓縮后,原始的代碼仍然存在于一個名為_Source的文件夾中
如何打包?
編輯器已經(jīng)自帶了打包程序,它位于FCKEDITOR的根文件夾中_PACKAGER文件夾中,名為Fckeditor.Packager.exe,將其復制到FCKEDITOR根文件夾中并運行,即可自動將JS腳本打包并壓縮
需要注意的是該程序是一個.NET程序,必須安裝.NET FRAMEWORK才能使用
想要獲取支持?
如果你捐贈15000歐元,你就可以獲得1年的免費技術支持(比較貴的說,相當于人民幣15萬,不過西歐的費用相當驚人)
如何安裝?
1.下載最新版的FCKEDITOR
2.解壓縮到你的站點根文件夾中名為FCKEDITOR的文件夾中(名稱必須為FCKEDITOR,因為配置文件中已經(jīng)使用此名稱來標示出FCKEDITOR的位置)
3.現(xiàn)在,編輯器就可以使用了,如果想要查看演示,可以按下面方法訪問:
http://your-site>/FCKeditor/_samples/default.html
注意:你可以將FCKEDITOR放置到任何文件夾,默認情況下,將其放入到FCKEDITOR文件夾是最為簡單的方法.如果你放入的文件夾使用別的名稱,請修改配置文件夾中編輯器BasePath參數(shù),如下所示:
oFckeditor.BasePath="/Components/fckeditor/";
另外,FCKEDITOR文件夾中所有以下劃線開頭的文件夾及文件,都是可選的,可以安全的從你的發(fā)布中刪除.它們并不是編輯器運行時必需的
如何將FCKEDITOR整合進我的頁面?
由于目前的版本提供的FCKEDITOR僅提供了JAVASCRIPT式的整合,因此,這里僅講述如何應用JAVASCRIPT來整合FCKEDITOR到站點中,當然,其他各種語言的整合,你可以參考_samples文件夾中的例子來完成
1,假如編輯器已經(jīng)安裝在你的站點的/FCKEDITOR/文件夾下.那么,第一步我們需要做的就是在頁面的HEAD段中放入SCRIPT標記以引入JAVASCRIPT整合模塊.例如:
script type="text/javascript" src="/fckeditor/fckeditor.js">/script>
其中路徑是可更改的
2,現(xiàn)在,FCKEDITOR類已經(jīng)可以使用了.有兩個方法在頁面中建立一個FCKEDITOR編輯器:
方法1:內聯(lián)方式(建議使用):在頁面的FORM標記內需要插入編輯器的地方置入以下代碼:
script type="text/javascript">
var oFCKeditor = new FCKeditor( 'FCKeditor1' ) ;
oFCKeditor.Create() ;
/script>
方法2:TEXTAREA標記替換法(不建議使用):在頁面的ONLOAD事件中,添加以下代碼以替換一個已經(jīng)存在的TEXTAREA標記
html>
head>
script type="text/javascript">
window.onload = function()
{
var oFCKeditor = new FCKeditor( 'MyTextarea' ) ;
oFCKeditor.ReplaceTextarea() ;
}
/script>
/head>
body>
textarea id="MyTextarea" name="MyTextarea">This is b>the/b> initial value./textarea>
/body>
/html>
3.現(xiàn)在,編輯器可以使用了
FCKEDITOR類參考:
下面是用來在頁面中建立編輯器的FCKEDITOR類的說明
構造器:
FCKeditor( instanceName[, width, height, toolbarSet, value] )
instanceName:編輯器的唯一名稱(相當于ID)
WIDTH:寬度
HEIGHT:高度
toolbarSet:工具條集合的名稱
value:編輯器初始化內容
屬性:
instanceName:編輯器實例名
width:寬度,默認值為100%
height:高度,默認值是200
ToolbarSet:工具集名稱,參考FCKCONFIG.JS,默認值是Default
value:初始化編輯器的HTML代碼,默認值為空
BasePath:編輯器的基路徑,默認為/Fckeditor/文件夾,注意,盡量不要使用相對路徑.最好能用相對于站點根路徑的表示方法,要以/結尾
CheckBrowser:是否在顯示編輯器前檢查瀏覽器兼容性,默認為true
DisplayErrors:是否顯示提示錯誤,默為true;
集合:
Config[Key]=value;
這個集合用于更改配置中某一項的值,如
oFckeditor.Config["DefaultLanguage"]="pt-br";
方法:
Create()
建立并輸出編輯器
RepaceTextArea(TextAreaName)
用編輯器來替換對應的文本框
如何配置FCKEDITOR?
FCKEDITOR提供了一套用于定制其外觀,特性及行為的設置集.主配置文件名為Fckconfig.js
你既可以編輯主配置文件,也可以自己定義單獨的配置文件.配置文件使用JAVASCRIPT語法.
修改后,在建立編輯器時,可以使用以下語法:
var oFCKeditor = new FCKeditor( 'FCKeditor1' ) ;
oFCKeditor.Config['CustomConfigurationsPath'] = '/myconfig.js' ;
oFCKeditor.Create() ;
提醒:當你修改配置后,請清空瀏覽器緩存以查看效果
配置選項:
AutoDetectLanguage=true/false 自動檢測語言
Basehref="" _fcksavedurl="""" 相對鏈接的基地址
ContentLangDirection="ltr/rtl" 默認文字方向
ContextMenu=字符串數(shù)組,右鍵菜單的內容
CustomConfigurationsPath="" 自定義配置文件路徑和名稱
Debug=true/false 是否開啟調試功能,這樣,當調用FCKDebug.Output()時,會在調試窗中輸出內容
DefaultLanguage="" 缺省語言
EditorAreaCss="" 編輯區(qū)的樣式表文件
EnableSourceXHTML=true/false 為TRUE時,當由可視化界面切換到代碼頁時,把HTML處理成XHTML
EnableXHTML=true/false 是否允許使用XHTML取代HTML
FillEmptyBlocks=true/false 使用這個功能,可以將空的塊級元素用空格來替代
FontColors="" 設置顯示顏色拾取器時文字顏色列表
FontFormats="" 設置顯示在文字格式列表中的命名
FontNames="" 字體列表中的字體名
FontSizes="" 字體大小中的字號列表
ForcePasteAsPlainText=true/false 強制粘貼為純文本
ForceSimpleAmpersand=true/false 是否不把符號轉換為XML實體
FormatIndentator="" 當在源碼格式下縮進代碼使用的字符
FormatOutput=true/false 當輸出內容時是否自動格式化代碼
FormatSource=true/false 在切換到代碼視圖時是否自動格式化代碼
FullPage=true/false 是否允許編輯整個HTML文件,還是僅允許編輯BODY間的內容
GeckoUseSPAN=true/false 是否允許SPAN標記代替B,I,U標記
IeSpellDownloadUrl=""下載拼寫檢查器的網(wǎng)址
ImageBrowser=true/false 是否允許瀏覽服務器功能
ImageBrowserURL="" 瀏覽服務器時運行的URL
ImageBrowserWindowHeight="" 圖像瀏覽器窗口高度
ImageBrowserWindowWidth="" 圖像瀏覽器窗口寬度
LinkBrowser=true/false 是否允許在插入鏈接時瀏覽服務器
LinkBrowserURL="" 插入鏈接時瀏覽服務器的URL
LinkBrowserWindowHeight=""鏈接目標瀏覽器窗口高度
LinkBrowserWindowWidth=""鏈接目標瀏覽器窗口寬度
Plugins=object 注冊插件
PluginsPath="" 插件文件夾
ShowBorders=true/false 合并邊框
SkinPath="" 皮膚文件夾位置
SmileyColumns=12 圖符窗列數(shù)
SmileyImages=字符數(shù)組 圖符窗中圖片文件名數(shù)組
SmileyPath="" 圖符文件夾路徑
SmileyWindowHeight 圖符窗口高度
SmileyWindowWidth 圖符窗口寬度
SpellChecker="ieSpell/Spellerpages" 設置拼寫檢查器
StartupFocus=true/false 開啟時FOCUS到編輯器
StylesXmlPath="" 設置定義CSS樣式列表的XML文件的位置
TabSpaces=4 TAB鍵產(chǎn)生的空格字符數(shù)
ToolBarCanCollapse=true/false 是否允許展開/折疊工具欄
ToolbarSets=object 允許使用TOOLBAR集合
ToolbarStartExpanded=true/false 開啟是TOOLBAR是否展開
UseBROnCarriageReturn=true/false 當回車時是產(chǎn)生BR標記還是P或者DIV標記
如何自定義樣式列表呢?
FCKEDITOR的樣式工具欄中提供了預定義的樣式,樣式是通過XML文件定義的,默認的XML樣式文件存在于FCkEditor根文件夾下的FckStyls.xml文件中
這個XML文件的結構分析如下:
?xml version="1.0" encoding="utf-8" ?>
Styles >
Style name="My Image" element="img">
Attribute name="style" value="padding: 5px" />
Attribute name="border" value="2" />
/Style >
Style name="Italic" element="em" />
Style name="Title" element="span">
Attribute name="class" value="Title" />
/Style >
Style name="Title H3" element="h3" />
/Styles>
每一個STYLE標記定義一種樣式,NAME是顯示在下拉列表中的樣式名,ELEMENT屬性指定此樣式所適用的對象,因為FCKEDITOR中的樣式是上下文敏感的,也就是說,選擇不同的對象,僅會顯示針對這類對象定義的樣式
拼寫檢查
FCKEDITOR 帶了兩種拼寫檢查工具,一種是ieSpell,默認情況下使用這種,使用這種方式的拼寫檢查,要求客戶下載并安裝iespell這個小軟件,另外,也提供 SpellPager的方式來進行拼寫檢查,不過,由于SPELLPAGER是由PHP編寫的服務器端腳本,因此,要求你的WEB服務器必須支持PHP腳 本語言方可
更改拼寫檢查器的方式請參見有關配置文件的詳細說明
壓縮腳本
為了提供腳本載入的效率,FCKEDITOR采用以下方法對腳本盡量壓縮以減少腳本尺寸:
1,移除掉腳本中的注釋
2.移除掉腳本中所有無意義的空白
另外,FCKEDITOR還提供了一個專門用于壓縮腳本的工具以便 你在發(fā)布時能減小文件尺寸,
你可以將_Packager文件夾中的Fckeditor.Packager.exe復制到FCKEDITOR根文件夾來運行并壓縮腳本
本地化FCKEDITOR
如果FCKEDITOR沒有提供您所需要的語言(實際上全有了),你也可以自行制作新的語言
,你只需要復制出EN.JS,然后在其基礎上進行翻譯.另外,語言名稱與對應的腳本文件名必須遵循RFC 3066標準,但是,需要小寫,例如:Portuguess Language對應的腳本文件名必須為pt.js
如果需要針對某個國家的某種語系,則可以在語系縮寫后加上橫線及國家縮寫即可
在使用時,系統(tǒng)會自動偵測客戶端語系及國別而運用適當?shù)慕缑嬲Z言.
當建立一種新的語言后,你必須在"Edit/lang/fcklanguagemanager.js"中為其建立一個條目,如下所示:
FCKLanguageManager.AvailableLanguages =
{
en : 'English',
pt : 'Portuguese'
}
需要提醒的是,文件必須保存為UTF-8格式
如何與服務器端腳本進行交互?
請查看例子以得到相關內容
另外,在ASP.NET中以以下步驟使用
1.把FCKEDITOR添中到工具箱
2.托拽FCKEDITOR控件到頁面
3.為其指定名稱
4.FCKEDITOR 類的所有屬性不光可以在代碼中使用,而且可以作為FCKEDITOR控件的屬性直接使用,例如,要改變皮膚,可以在UI頁面中指定SkinPath= "/fckeditor/editor/skins/office2003"即可,其實FCKEDITOR的ASP.NET版本可以做得更好,你可以找到 FCKEDITOR ASP.NET 2.1的源文件,然后修改該控件的設計,為其暴露更多有用的屬性,重新編譯即可
5,POSTBACK后的數(shù)據(jù),使用FCKEDITOR控件的value屬性獲得
6. 由于默認狀態(tài)下,ASP.NET不允許提交含有HTML及JAVASCRIPT的內容,因此,你必須將使用FCKEDITOR的頁面的 ValidateRequest設為false.(%@page validteRequest="false" %>即可)
--------------------------------------------------------
附:
一、如何設置上傳文件語言
把FCKeditor根目錄下面的fckconfig.js文件里
var _FileBrowserLanguage = 'asp' ; //asp|aspx|cfm | lasso | perl | php | py
var _QuickUploadLanguage = 'asp' ; // asp | aspx | cfm | lasso | php
這兩行中改成您所需要調用的編輯器語言,如用asp.net則改為aspx;
二、解決中文的問題:
在web.config中加入:
globalization requestEncoding="GB2312" responseEncoding="GB2312"/>
這樣設置后可以顯示中文的文件,但URL地址也是中文的;
如果服務器對中文地址的解析不好,可能導致圖片無法瀏覽;
所以修改:editor\filemanager\browser\default\frmresourceslist.html
中的OpenFile函數(shù),把
window.top.opener.SetUrl( fileUrl ) ;
修改為:
window.top.opener.SetUrl( escape(fileUrl) ) ;
三.設置上傳的目錄:
1:在web.config中設置:
appSettings>
add key="FCKeditor:UserFilesPath" value="/fck/UpLoad/" />
/appSettings>
2:在Session中設置:
在editor\filemanager\browser\default\connectors\aspx\connector.aspx中加入以下代碼:
script runat="server" language="C#">
protected override void OnInit(EventArgs e)
{
Session["FCKeditor:UserFilesPath"] = "/fck/UpLoad1/";
}
/script>
附:如何在asp.net中動態(tài)設置上傳圖片的路徑?
1.在javascript中修改FCKConfig.ImageBrowserURL的值,修改方式如下:
FCKConfig.ImageBrowserURL += "?Path=要上傳的文件路徑";
如:要把文件上傳到站點根目錄的UploadFile文件夾中,則設置為:
FCKConfig.ImageBrowserURL += "?Path=/UploadFile";
2.在"editor\filemanager\browser\default\connectors\aspx\connector.aspx"文件最后中增加以下程序:
script runat="server" language="C#">
protected override void OnInit(EventArgs e)
{
if( Request.QueryString["Path"]==null ){
Session["FCKeditor:UserFilesPath"] = "/UpLoadFiles/"; //設置默認值
}else{
Session["FCKeditor:UserFilesPath"] = Request.QueryString["Path"];
}
}
/script>
Feedback
#1樓 [樓主] 回復 引用 查看
2007-08-22 15:45 by 春風依舊
javascript調用方式:
------------------------------------
script. type=”text/javascript” src=”FCKeditor/fckeditor.js”>/scrīpt>
textarea name=”content” cols=”80″ rows=”4″>
/textarea>
script. type=”text/javascript”>
var FCKeditor = new FCKeditor(”content”);
oFCKeditor.BasePath = “FCKeditor/”;
oFCKeditor.Height = 400;
oFCKeditor.ToolbarSet = “Default”;
oFCKeditor.ReplaceTextarea();
/script>
------------------------------------
如果想要使用從數(shù)據(jù)庫讀來的文本數(shù)據(jù)或者是后臺來自文件的txt/html文本數(shù)據(jù)。
只要在
------------------------------------
textarea name=”content” cols=”80″ rows=”4″>
/textarea>
------------------------------------
中加入自己的顯示內容的formbean對應字段即可
------------------------------------
textarea name=”content” cols=”80″ rows=”4″>
c:out value=”${contentData}” />
/textarea>
------------------------------------
這樣內容就會被顯示在FCKeditor編輯框中了,點擊提交按鈕以后就可以在后臺的相應java action中得到content參數(shù)中的內容就是頁面上FCKeditor中的內容數(shù)據(jù)了。可以在struts/jsf中使用。
====================================
由于給FCKeditor瘦身,所以常會報缺少對象支持等錯誤,只要在FCKeditor/editor/lang中加上相應的js語言文件即 可。如果加載頁面失?。‵CKeditor未定義)還有一個可能就是引用FCKeditor/fckeditor.js文件路徑不對!
關于FCKeditor瘦身要點如下:
1.將FCKeditor目錄下及子目錄下所有以“_”下劃線開頭的文件夾刪除
2.FCKeditor根目錄下只保留fckconfig.js, fckeditor.js, fckstyles.xml, fcktemplates.xml,其余全部刪除
3.將editor/filemanager/upload目錄下文件及文件夾清空
4.將/editor/filemanager/browser/default/connectors/下的所有文件刪除
5.還可以將editor/skins目錄下的皮膚文件刪除,只留下default一套皮膚(如果你不需要換皮膚的話)
6.還可以將editor/lang目錄下文件刪除,只保留en.js, fcklanguagemanager.js, zh-cn.js, zh.js文件
7.如果你是使用javascrīpt來調用加載FCKeditor,那么就不需要在web.xml中配置fckeditor的tag文件。
8.還有一個問題剛開始使用FCKeditor的人常會遇到就怎么控制它的toolbar的大小和元素排列,其實很簡單。
在fckconfig.js中用這樣的標簽[]來劃分每行的元素的多少,這樣就可以控制toolbar的長短和大小了,具體示例參看:fckconfig.js中的toolbarset[”Default”]
====================================
用fckconfig.js中的一些選項來控制toolbarset中控件的功能,實現(xiàn)功能裁剪:
1):取消超鏈接中的瀏覽服務器和上傳功能,方法如下:
------------------------------------
FCKConfig.LinkBrowser = true;
FCKConfig.LinkUpload = true;
改為:
FCKConfig.LinkBrowser = false;
FCKConfig.LinkUpload = false;
------------------------------------
2):取消圖片鏈接中的瀏覽服務器和上傳功能,方法如下:
------------------------------------
FCKConfig.ImageUpload = true;
FCKConfig.ImageBrowser = true;
改為:
FCKConfig.ImageUpload = false;
FCKConfig.ImageBrowser = false;
------------------------------------
3):Dlg Button中取消高級功能,方法如下:
FCKConfig.LinkDlgHideAdvanced = false ;
FCKConfig.ImageDlgHideAdvanced = false ;
改為:
FCKConfig.ImageDlgHideAdvanced = true ;
FCKConfig.LinkDlgHideTarget = true ;
------------------------------------
下一篇介紹FCKeditor的上傳和瀏覽服務器功能,以及如何在里面實現(xiàn)動態(tài)
超連接,轉發(fā)到servlet經(jīng)過filter以后去調用服務器的action
如何實現(xiàn)對應用戶瀏覽自己的圖片的列表實現(xiàn)!
====================================
FCKeditor集成java servlet可以實現(xiàn)文件的上傳和服務器端列表讀取功能FCKeditor自己提供了兩個servlet來分別實現(xiàn)上傳文件功能,和讀取服務器端文件列表功能,這兩個servlet分別為:
com.fredck.FCKeditor.connector.ConnectorServlet(讀取文件列表)
com.fredck.FCKeditor.uploader.SimpleUploaderServlet(實現(xiàn)文件上傳)
1.瀏覽服務器端文件列表
------------------------------------
web.xml文件中,比如:ConnectorServlet中的配置選項:
init-param>
param-name>baseDir/param-name>
param-value>/UserFiles//param-value>
/init-param>
意思是在瀏覽服務器上的baseDir配置指定里面的所有文件及其目錄結構列表。
如果你的baseDir沒有配置,Connector將會自動創(chuàng)建一個默認的文件夾
UserFiles,對應的ConnectorServlet中init()方法中代碼如下:
------------------------------------
baseDir = getInitParameter(”baseDir”);
if (baseDir == null)
baseDir = “/UserFiles/”;
------------------------------------
還想說一下的是,F(xiàn)CKeditor的client調用server的servlet方法采用的是Ajax思想來實現(xiàn)。當你點擊瀏覽服務器 (browser server)的時候就會觸發(fā)一個異步的javascrīpt + xmlhttp的調用響應,后臺的servlet會去完成你要請求的事件,然后數(shù)據(jù)以xml方式返回給client來解析。很明顯,你要實現(xiàn)去數(shù)據(jù)庫或者 其他的文件系統(tǒng)請求列表,你只要修改
ConnectorServlet中兩個私有方法:getFolders 和 getFiles
讓它去你指定的地方得到文件列表即可,這樣你的文件可以放在任何你指定目錄下。多說一句,很多人都想知道個人blog系統(tǒng)中怎么實現(xiàn)上傳文件以后 對應用戶瀏覽自己的列表的,我的做法很簡單,建立你用戶名的文件夾,你上傳只能上傳到你的目錄夾,瀏覽可以通過程序指定瀏覽對應用戶下的文件夾即可,這個 時候你要修改Connectorservlet中的路徑即可!
------------------------------------
2.超連接重定位問題
------------------------------------
FCKeditor可以插入超連接,實現(xiàn)對文件的預覽功能,只要我們稍微改變我們可以使FCKeditor編輯器支持對任意文件系統(tǒng)下的任意文件 的客戶端瀏覽和下載保存!FCKeditor本來提供的是相對URL超鏈接,只要我們修改ConnectorServlet中傳遞給客戶端的地址的時候, 把它改寫成絕對URL然后再通過我們自己的filter的servlet實現(xiàn)重定向去一個下載/瀏覽文件的struts的action方法就可以實現(xiàn)在客 戶端對超連接文件的下載和瀏覽!說一下具體做法吧:
1):修改ConnectorServlet傳遞給客戶端javascrīpt的路徑,代碼如下:
String currentUrl = “http://” + request.getserver +request.getServerPort + request.getContextPath + resourcePath;
以上代碼請在ConnectorServlet的doGet()里面拼裝!在調用CreateCommonXml()私有方法的時候參數(shù)傳入:
myEl.setAttribute(”path”,currentPath);
myEl.setAttribute(”url”,currentUrl);
提醒一下resourcePath為在web.xml配置文件中ConnectorServlet中的一個初始化參數(shù)配置,等一下利用filter實現(xiàn)對超連接的重定位就提取URL中的這個配置參數(shù)來判斷,配置如下:
init-param>
param-name>resourcePath/param-name>
param-value>/fileSystem//param-value>
/init-param>
2):建立你的filter servlet,實現(xiàn)對URL的截獲,對符合要求的URL進行重定位到你的對應action中去即可
3):實現(xiàn)你的對應action來實現(xiàn)文件的上傳和下載功能即可!
4):擴展功能-實現(xiàn)對URL的加密,對連接的URL中加上一串字符,最后幾位作為算法校驗,對不符合要求的URL連接,filter將會拒絕重 定位到指定action。此外利用自己寫的擴展類還可以實現(xiàn)對超連接的文件類型進行限制,比如你只能超連接JPG|GIF|DOC|TXT|HTML等幾 種后綴名的文件,對其他文件即使你指定超連接也讓你瀏覽和下載,這些都可以在web.xml中通過修改對應servlet的配置文件的初始化參數(shù)實現(xiàn)。
3.頁面javascrīpt修改
------------------------------------
瀏覽服務器的功能對應的html/javascrīpt相關的文件為:browser.html和frmresourcelist.html對應 你想傳遞的信息你可以append在文件名的字符串后面,在GetFileRowHtml()的javascrīpt函數(shù)中實現(xiàn)對文件名的截取,這樣 client只會顯示文件名,而你可以得到文件的數(shù)據(jù)庫唯一標識,任何你想要的信息你都可以通過修改ConnectorServlet中的私有方法 getFiles()來實現(xiàn),只要修改頁面frmresurcelist.html中的GetFileRowHtml()中傳入變量fileName即 可。你還可以在點擊選中文件的時候實現(xiàn)一個你自己的Ajax調用,一切取決你的項目需要!
4.我不是一個javascrīpt高手,其實如果我對javascrīpt了解多一些也許對客戶端的代碼修改以后做出更眩的功能??梢愿玫耐瓿蓪CKeditor裁剪。
-------------------------------------
5.注意點
-------------------------------------
無論怎么修改別人的東西,請一定尊重開源精神!
很多人配置好了FCKeditor的上傳功能以后常會遇到xmlhttp request 404 error,后面是一串路徑,其實就是你的servlet-mapping中的路徑不對,你只要把xmlhttp request errot 404 后面跟的路徑,copy到你的web.xml中對應紅色文字的位置,如下:
servlet-mapping>
servlet-name>Connector/servlet-name>
url-pattern>/FCKeditor/editor/filemanager/browser/default/connectors/jsp/connector/url-pattern>
/servlet-mapping>
別忘了SimpleUploader的servlet-mapping也要做同樣的修改!
還有一個錯誤就是http 500錯誤,這個可能是你的URL請求不對,應該和FCKeditor沒關系的!
======================================
fckconfig.js總配置文件,可用記錄本打開,修改后將文件存為utf-8 編碼格式。找到:
--------------------------------------
FCKConfig.TabSpaces = 0;
改為:
FCKConfig.TabSpaces = 1;
即在編輯器域內可以使用Tab鍵。
如果你的編輯器還用在網(wǎng)站前臺的話,比如說用于留言本或是日記回復時,那就不得不考慮安全了,
在前臺千萬不要使用Default的toolbar,要么自定義一下功能,要么就用系統(tǒng)已經(jīng)定義好的Basic,
也就是基本的toolbar,找到:
--------------------------------------
FCKConfig.ToolbarSets[”Basic”] = [
['Bold','Italic','-','OrderedList','UnorderedList','-',/*'Link',*/'Unlink','-','Style','FontSize','TextColor','BGColor','-',
‘Smiley','SpecialChar','Replace','Preview'] ];
這是改過的Basic,把圖像功能去掉,把添加鏈接功能去掉,因為圖像和鏈接和flash和圖像按鈕添加功能都能讓前臺頁直接訪問和上傳文件, fckeditor還支持編輯域內的鼠標右鍵功能。
FCKConfig.ContextMenu = ['Generic',/*'Link',*/'Anchor',/*'Image',*/'Flash','Select','Textarea','Checkbox','Radio','TextField','HiddenField',
/*'ImageButton',*/'Button','BulletedList','NumberedList','TableCell','Table','Form'];
這也是改過的把鼠標右鍵的“鏈接、圖像,F(xiàn)LASH,圖像按鈕”功能都去掉。
找到:
FCKConfig.FontNames = ‘Arial;Comic Sans MS;Courier New;Tahoma;Times New Roman;Verdana';
加上幾種我們常用的字體
FCKConfig.FontNames = ‘宋體;黑體;隸書;楷體_GB2312;Arial;Comic Sans MS;Courier New;Tahoma;Times New Roman;Verdana';
添加文件 /TestFCKeditor/test.jsp:
----------------------------------------
%@ page language=”java” import=”com.fredck.FCKeditor.*” %>
%@ taglib uri=”/TestFCKeditor” prefix=”FCK” %>
script. type=”text/javascript” src=”/TestFCKeditor/FCKeditor/fckeditor.js”>/script>
%–
三種方法調用FCKeditor
1.FCKeditor自定義標簽 (必須加頭文件 %@ taglib uri=”/TestFCKeditor” prefix=”FCK” %> )
2.script腳本語言調用 (必須引用 腳本文件 script. type=”text/javascript” src=”/TestFCKeditor/FCKeditor/fckeditor.js”>/script> )
3.FCKeditor API 調用 (必須加頭文件 %@ page language=”java” import=”com.fredck.FCKeditor.*” %> )
–%>
%–
form. action=”show.jsp” method=”post” target=”_blank”>
FCK:editor id=”content” basePath=”/TestFCKeditor/FCKeditor/”
width=”700″ height=”500″ skinPath=”/TestFCKeditor/FCKeditor/editor/skins/silver/”
toolbarSet = “Default”>
內容
/FCK:editor>
input type=”submit” value=”Submit”>
/form>
–%>
form. action=”show.jsp” method=”post” target=”_blank”>
table border=”0″ width=”700″>
tr>
td>
textarea id=”content” name=”content” style=”WIDTH: 100%; HEIGHT: 400px”>input/textarea>
script. type=”text/javascript”>
var FCKeditor = new FCKeditor('content? ;
oFCKeditor.BasePath = “/TestFCKeditor/FCKeditor/” ;
oFCKeditor.Height = 400;
oFCKeditor.ToolbarSet = “Default” ;
oFCKeditor.ReplaceTextarea();
/script>
input type=”submit” value=”Submit”>
/td>
/tr>
/table>
/form>
%–
form. action=”show.jsp” method=”post” target=”_blank”>
%
FCKeditor oFCKeditor ;
oFCKeditor = new FCKeditor( request, “content” ) ;
oFCKeditor.setBasePath( “/TestFCKeditor/FCKeditor/” ) ;
oFCKeditor.setValue( “input” );
out.println( oFCKeditor.create() ) ;
%>
br>
input type=”submit” value=”Submit”>
/form>
–%>
添加文件/TestFCKeditor/show.jsp:
%
String content = request.getParameter(”content”);
out.print(content);
%>
====================================
1、適時打開編輯器
------------------------------------
很多時候,我們在打開頁面的時候不需要直接打開編輯器,而在用到的時候才打開,這樣一來有很好的用戶體驗,另一方面可以消除FCK在加載時對頁面打開速度的影響,點擊“Open Editor”按鈕后才打開編輯器界面。
實現(xiàn)原理:
使用JAVASCRIPT版的FCK,在頁面加載時(未打開FCK),創(chuàng)建一個隱藏的TextArea域,這個TextArea
的name和ID要和創(chuàng)建的FCK實例名稱一致,然后點擊”O(jiān)pen Editor”按鈕時,通過調用一段函數(shù),使用
FCK的ReplaceTextarea()方法來創(chuàng)建FCKeditor,代碼如下:
------------------------------------
script. type=”text/javascript”>
!–
function showFCK(){
var FCKeditor = new FCKeditor( ‘fbContent' ) ;
oFCKeditor.BasePath = ‘/FCKeditor/' ;
oFCKeditor.ToolbarSet = ‘Basic' ;
oFCKeditor.Width = ‘100%' ;
oFCKeditor.Height = ‘200′ ;
oFCKeditor.ReplaceTextarea() ;
}
//–>
/script>
textarea name=”fbContent” id=”fbContent”>/textarea>
2、使用FCKeditor 的 API
-------------------------------------
FCKeditor編輯器,提供了非常豐富的API,用于給End User實現(xiàn)很多想要定制的功能,比如最基本的數(shù)據(jù)驗證,如何在提交的時候用JS判斷當前編輯器區(qū)域內是否有內容,F(xiàn)CK的API提供了GetLength()方法;
再比如如何通過腳本向FCK里插入內容,使用InsertHTML()等;
還有,在用戶定制功能時,中間步驟可能要執(zhí)行FCK的一些內嵌操作,那就用ExecuteCommand()方法。
詳細的API列表,請查看FCKeditor的Wiki。而常用的API,請查看FCK壓縮包里的_samples/html/sample08.html。此處就不貼代碼了。
3、外聯(lián)編輯條(多個編輯域共用一個編輯條)
--------------------------------------
這個功能是2.3版本才開始提供的,以前版本的FCKeditor要在同一個頁面里用多個編輯器的話,得一個個創(chuàng)建,現(xiàn)在有了這個外聯(lián)功能,就不用那么麻煩了,只需要把工具條放在一個適當?shù)奈恢?,后面就可以無限制的創(chuàng)建編輯域了。
要實現(xiàn)這種功能呢,需要先在頁面中定義一個工具條的容器:div id=”xToolbar”>/div>,然后再根據(jù)這個容器的id屬性進行設置。
JAVASCRIPT實現(xiàn)代碼:
--------------------------------------
div id=”xToolbar”>/div>
FCKeditor 1:
script. type=”text/javascript”>
!–
// Automatically calculates the editor base path based on the _samples directory.
// This is usefull only for these samples. A real application should use something like this:
// oFCKeditor.BasePath = ‘/fckeditor/'; // ‘/fckeditor/' is the default value.
var sBasePath = document.location.pathname.substring(0,document.location.pathname.lastIndexOf('_samples'));
var FCKeditor = new FCKeditor( ‘FCKeditor_1′ );
oFCKeditor.BasePath = sBasePath;
oFCKeditor.Height = 100;
oFCKeditor.Config[ ‘ToolbarLocation' ] = ‘Out:parent(xToolbar)';
oFCKeditor.Value = ‘This is some strong>sample text/strong>. You are using FCKeditor.';
oFCKeditor.Create();
//–>
/script>
br />
FCKeditor 2:
script. type=”text/javascript”>
!–
FCKeditor = new FCKeditor( ‘FCKeditor_2′ );
oFCKeditor.BasePath = sBasePath;
oFCKeditor.Height = 100;
oFCKeditor.Config[ ‘ToolbarLocation' ] = ‘Out:parent(xToolbar)';
oFCKeditor.Value = ‘This is some strong>sample text/strong>. You are using FCKeditor.';
oFCKeditor.Create();
//–>
/script>
-------------------------------------
此部分的詳細DEMO請參照_samples/html/sample11.html,_samples/html/sample11_frame.html
4、文件管理功能、文件上傳的權限問題
-------------------------------------
一直以來FCKeditor的文件管理部分的安全是個值得注意,但很多人沒注意到的地方,雖然FCKeditor在各個Release版本中一直存在的一個功能就是對上傳文件類型進行過濾,但是她沒考慮過另一個問題:到底允許誰能上傳?到底誰能瀏覽服務器文件?
之前剛開始用FCKeditor時,我就出現(xiàn)過這個問題,還好NetRube(FCKeditor中文化以及FCKeditor ASP版上傳程序的作者)及時提醒了我,做法是去修改FCK上傳程序,在里面進行權限判斷,并且再在fckconfig.js里把相應的一些功能去掉。但 隨之FCK版本的不斷升級,每升一次都要去改一次配置程序fckconfig.js,我發(fā)覺厭煩了,就沒什么辦法能更好的控制這種配置么?事實上,是有 的。
在fckconfig.js里面,有關于是否打開上傳和瀏覽服務器的設置,在創(chuàng)建FCKeditor時,通過程序來判斷是否創(chuàng)建有上傳瀏覽功能的編輯器。首先,我先在fckconfig.js里面把所有的上傳和瀏覽設置全設為false,接著我使用的代碼如下:
JAVASCRIPT版本:
-------------------------------------
script. type=”text/javascript”>
var FCKeditor = new FCKeditor( ‘fbContent' );
% if power = powercode then %>
oFCKeditor.Config['LinkBrowser'] = true;
oFCKeditor.Config['ImageBrowser'] = true;
oFCKeditor.Config['FlashBrowser'] = true;
oFCKeditor.Config['LinkUpload'] = true;
oFCKeditor.Config['ImageUpload'] = true;
oFCKeditor.Config['FlashUpload'] = true;
% end if %>
oFCKeditor.ToolbarSet = ‘Basic';
oFCKeditor.Width = ‘100%';
oFCKeditor.Height = ‘200′;
oFCKeditor.Value = ‘';
oFCKeditor.Create();
/script>
-------------------------------------
在按鈕旁邊加文字
-------------------------------------
打開 editor/js/ 兩個js文件
fckeditorcode_gecko.js
fckeditorcode_ie.js
第一個是支持非ie瀏覽器的
第二個文件是支持ie瀏覽器的
搜索 FCKToolbarButton,可以看到許多類似這樣的語句:
case ‘Save':B = new FCKToolbarButton('Save', FCKLang.Save, null, null, true, null, 3); break;
‘Save'是按鈕英文名字
FCKToolbarButton 的四個參數(shù)分別是:
按鈕命令名稱,按鈕標簽文字,按鈕工具提示,按鈕樣式,按鈕是否在源代碼模式可見,按鈕下拉菜單其中將第4項參數(shù)設置為 FCK_TOOLBARITEM_ICONTEXT 即可使按鈕旁邊出現(xiàn)文字,注意沒有引號。
例如:
case ‘Preview':B = new FCKToolbarButton('Preview', FCKLang.Preview, null, FCK_TOOLBARITEM_ICONTEXT, true, null, 5);
這樣我們就可以將 我們經(jīng)常用的3種模式源代碼、預覽、全屏編輯按鈕都加上文字了。
解釋fck樣式的工作原理
-------------------------------------
fck的樣式設置涉及到了兩個文件,一個是你定義好的樣式表文件.css,另一個是告訴fck樣式表如何使用的xml文件,兩個文件確一不可。
css文件的位置是不做要求的,但是需要你在應用的編輯器的頁面上插入樣式表文件的鏈接。這樣才能顯示出來樣式。
fckstyles.xml 在與editor目錄同級的目錄下。該文件定義了那些樣式可以使用在那些標簽里面。
這就是fck自帶的樣式xml定義:
?xml version=”1.0″ encoding=”utf-8″ ?>
Styles>
Style name=”Image on Left” element=”img”>
Attribute name=”style” value=”padding: 5px; margin-right: 5px” />
Attribute name=”border” value=”2″ />
Attribute name=”align” value=”left” />
/Style>
Style name=”Image on Right” element=”img”>
Attribute name=”style” value=”padding: 5px; margin-left: 5px” />
Attribute name=”border” value=”2″ />
Attribute name=”align” value=”right” />
/Style>
Style name=”Custom Bold” element=”span”>
Attribute name=”style” value=”font-weight: bold;” />
/Style>
Style name=”Custom Italic” element=”em” />
Style name=”Title” element=”span”>
Attribute name=”class” value=”Title” />
/Style>
Style name=”Code” element=”span”>
Attribute name=”class” value=”Code” />
/Style>
Style name=”Title H3″ element=”h3″ />
Style name=”Custom Ruler” element=”hr”>
Attribute name=”size” value=”1″ />
Attribute name=”color” value=”#ff0000″ />
/Style>
/Styles>
每一個style>將來會生成一個樣式的菜單項。name名稱就是顯示在菜單里的文字;element定義了該樣式可以應用在那種 html標簽上,Attribute>的 name 指定了將會修改標簽的哪個屬性來應用樣式,value則是修改成的值。
看這個:
Style name=”Title” element=”span”>
Attribute name=”class” value=”Title” />
/Style>
如果你在fck選定了文字 “經(jīng)典論壇 》 前臺制作與腳本專欄 》 FCKeditor 實戰(zhàn)技巧 - 1 》 編輯帖子” 應用該樣式 則原來文字就會變成span class=”Title”>經(jīng)典論壇 》 前臺制作與腳本專欄 》 FCKeditor 實戰(zhàn)技巧 - 1 》 編輯帖子/span>
注意:如果編輯器呈整頁編輯狀態(tài),那么整頁里面也需要插入樣式表鏈接才能顯示出來樣式。
============================================
FCKeditor JavaScript. API(翻譯整理)
原文地址:http://wiki.fckeditor.net/Developer%27s_Guide/Javascript_API
--------------------------------------------
FCK 編輯器加載后,將會注冊一個全局的 FCKeditorAPI 對象。
FCKeditorAPI 對象在頁面加載期間是無效的,直到頁面加載完成。如果需要交互式地知道 FCK 編輯器已經(jīng)加載完成,可使用“FCKeditor_OnComplete”函數(shù)。
script. type=”text/javascript”>
function FCKeditor_OnComplete(editorInstance) {
FCKeditorAPI.GetInstance('FCKeditor1′).Commands.GetCommand('FitWindow').Execute();
}
/script>
在當前頁獲得 FCK 編輯器實例:
var Editor = FCKeditorAPI.GetInstance('InstanceName');
從 FCK 編輯器的彈出窗口中獲得 FCK 編輯器實例:
var Editor = window.parent.InnerDialogLoaded().FCK;
從框架頁面的子框架中獲得其它子框架的 FCK 編輯器實例:
var Editor = window.FrameName.FCKeditorAPI.GetInstance('InstanceName');
從頁面彈出窗口中獲得父窗口的 FCK 編輯器實例:
var Editor = opener.FCKeditorAPI.GetInstance('InstanceName');
獲得 FCK 編輯器的內容:
oEditor.GetXHTML(formatted); // formatted 為:true|false,表示是否按HTML格式取出
也可用:
oEditor.GetXHTML();
設置 FCK 編輯器的內容:
oEditor.SetHTML(”content”, false); // 第二個參數(shù)為:true|false,是否以所見即所得方式設置其內容。此方法常用于“設置初始值”或“表單重置”操作。
插入內容到 FCK 編輯器:
oEditor.InsertHtml(”html”); // “html”為HTML文本
檢查 FCK 編輯器內容是否發(fā)生變化:
oEditor.IsDirty();
在 FCK 編輯器之外調用 FCK 編輯器工具條命令:
命令列表如下:
--------------------------------------------
DocProps, Templates, Link, Unlink, Anchor, BulletedList, NumberedList, About, Find, Replace, Image, Flash, SpecialChar, Smiley, Table, TableProp, TableCellProp, UniversalKey, Style, FontName, FontSize, FontFormat, Source, Preview, Save, NewPage, PageBreak, TextColor, BGColor, PasteText, PasteWord, TableInsertRow, TableDeleteRows, TableInsertColumn, TableDeleteColumns, TableInsertCell, TableDeleteCells, TableMergeCells, TableSplitCell, TableDelete, Form, Checkbox, Radio, TextField, Textarea, HiddenField, Button, Select, ImageButton, SpellCheck, FitWindow, Undo, Redo
--------------------------------------------
使用方法如下:
--------------------------------------------
oEditor.Commands.GetCommand('FitWindow').Execute();
-----------------------------------
!--[if !supportEmptyParas]--> !--[endif]-->