國外知名編輯器 javascript
1.官方文檔,演示,下載地址:http://ckeditor.com/downloadphp
一個專門使用在網頁上屬於開放源代碼的所見即所得文字編輯器。它志於輕量化,不須要太複雜的安裝步驟便可使用。css
1.引入<script src="ckeditor/ckeditor.js" type="text/javascript"></script> html
2.頁面代碼前端
<!--第一個---> <textarea id="TextArea1" cols="20" rows="2" class="ckeditor"></textarea> <!--第二個---> <div id="editorSpace"></div> <!--直接設置class好像也行的能夠試試---> <script type="text/javascript"> CKEDITOR.appendTo('editorSpace'); </script>
3.配置ckeditor的一些經常使用配置,在config.js這個文件中,java
全部的屬性配置均可以查閱官方的API:http://docs.cksource.com/ckeditor_api/symbols/CKEDITOR.config.htmlweb
4.列出一些經常使用的屬性配置,配置圖片上傳:bootstrap
CKEDITOR.editorConfig = function( config ) { // Define changes to default configuration here. For example: // config.language = 'fr'; // config.uiColor = '#AADC6E'; //config.width=700; //config.height=400; //config.skin='v2'; //自帶皮膚種類有3種:Kama(默認) , Office 2003 , v2 //config.font_names = '宋體;楷體 _GB2312;新宋體;黑體;隸書;幼圓;微軟雅黑;Arial;Comic Sans MS;Courier New;Tahoma;Times New Roman;Verdana'; //若是上傳圖片或者flash則須要,下面配置ckfinder var ckfinderPath = "/SomePackage/FCKeditor/ckfinder"; //配置爲絕對路徑 config.filebrowserBrowseUrl = ckfinderPath + "/ckfinder.html"; config.filebrowserImageBrowseUrl = ckfinderPath + "/ckfinder.html?Type=Image"; config.filebrowserFlashBrowseUrl = ckfinderPath + "/ckfinder.html?Type=Flash"; config.filebrowserUploadUrl = ckfinderPath + "/core/connector/aspx/connector.aspx?command=QuickUpload&Type=Files"; config.filebrowserImageUploadUrl = ckfinderPath + "/core/connector/aspx/connector.aspx?command=QuickUpload&Type=Images"; config.filebrowserFlashUploadUrl = ckfinderPath + "/core/connector/aspx/connector.aspx?command=QuickUpload&Type=Flash"; };
5.若是上傳圖片則需在項目中添加ckfinder文件api
7.改變ckfinder文件夾下的config.ascx,內容以下:瀏覽器
public override bool CheckAuthentication() { //object str = session["username"]; //if (str != null & Convert.ToBoolean(str) == true) //{ // return true; //} return true; //不建議直接返回true,最好作下用戶驗證判斷在返回true(安全),上面爲驗證的一個實例 } 複製代碼
9.去除廣告方法:找到ckfinder/core/js/ckfinder_ie.js及ckfinder_gecko.js,將其中的 en.call(window,qo);去掉
很強大,很好用。世界各地都在用的
【注】原文的做者是爲了作一個新聞發佈平臺,
儘管免費的CKFinder是Demo版本,可是功能完整
正常的是話是按照官網的document一步一步配置,雖然並不難,可是有些東西特別分散,仍是全英文的
Step1:找到須要放置CKEditor編輯器的頁面,引入CKEditor的js文件(${contextPath}是JSTL寫法,請改爲你本身的路徑寫法,絕對路徑或者相對路徑)
<script type="text/javascript" src="${contextPath}/ckeditor4.1/ckeditor.js"></script>
Step2:在須要提交的form裏,寫一個<textarea>
<form id="detailForm" method="post"> <textarea id="content" name="content"></textarea> <input type="button" value="保存" id="save" onclick="save()" /> </form>
Step3:建立CKEditor實例
<script type="text/javascript"> var editor = null; window.onload = function(){ editor = CKEDITOR.replace('content'); //參數‘content’是textarea元素的name屬性值,而非id屬性值 } </script>
注意上面代碼中editor=CKEDITOR.repalce()必須寫在window.onload事件裏,或者寫在textarea元素後面,以避免出現content不存在的錯誤。上述代碼並非建立CKEditor實例的惟一方法,你們能夠自行查閱資料。
Step4:在頁面js中爲CKEditor編輯器設置/獲取值
editor.setData('這裏是須要傳遞給CKEditor編輯器實例的值'); editor.getData();
注意,上面代碼中用到了一個變量editor,就是Step3中定義的那個editor。這也就是爲何Step3裏面要單獨寫var editor = null這句代碼。固然,在<textarea></textarea>中直接設置值也能夠,可是那隻能在CKEDITOR.replace()以前起做用。
Step5:在後臺java代碼中獲取CKEditor編輯器的值
<script type="text/javascript"> function save(){ editor.updateElement(); //很是重要的一句代碼 //前臺驗證工做 //提交到後臺 } </script>
由於CKEditor編輯器取代了原來咱們寫的textarea元素,因此咱們在編輯器裏寫的內容,其實都不在textarea中,所以,爲了能在後臺經過textarea得到值,必須用editor.updateElement()來更新textarea元素。這樣,在後臺java代碼中就能夠用request.getParameter('content');或者其餘代碼獲得編輯器的內容了,不然獲得的極可能不是編輯器裏的內容。
方式一:修改ckeditor4.1/config.js文件
CKEDITOR.editorConfig = function( config ) { config.language = 'zh-cn'; config.uiColor = '#AADC6E'; };
方式二:複製ckeditor4.1/config.js,仍然放在ckeditor4.1目錄下,可是更名爲myconfig.js,並在這個文件中修改配置。可是要在建立編輯器實例時指明配置文件路徑:
<script type="text/javascript"> var editor = null; window.onload = function() { editor = CKEDITOR.replace( 'content', { customConfig:'${contextPath}/ckeditor4.1/myconfig.js' }); }; </script>
方式三:在建立編輯器實例時指定配置
<script type="text/javascript"> var editor = null; window.onload = function() { editor = CKEDITOR.replace( 'content', uiColor: '#9AB8F3', language:'zh-cn' }); }; </script>
使用第二種或者第三種方式的好處就在於,當你更新CKEditor版本時,不至於由於直接複製了新的config.js而覆蓋掉個性配置。
完整的CKEditor的配置選項在 這裏。下面是一些經常使用的配置。
在CKEditor編輯器裏面敲回車,默認是加一個<p></p>元素,並且在<p>以前和</p>以後會加換行。這就形成一個問題,保存的數據最後可能會出現「\t\n」。當咱們使用editor.setData(......)時,實際上變成了
editor.setData(......);
由於數據自己帶有一個\t\n,使得js代碼換行了,從而頁面出錯。可能還有其餘方法解決這個問題,可是我採用的是禁止在回車變<p></p>時在後面添加換行。其方法是:
<script type="text/javascript"> var editor = null; window.onload = function() { editor = CKEDITOR.replace( 'content', { customConfig:'${contextPath}/ckeditor4.1/myconfig.js', on: { instanceReady: function( ev ) { this.dataProcessor.writer.setRules( 'p', { indent: false, breakBeforeOpen: false, //<p>以前不加換行 breakAfterOpen: false, //<p>以後不加換行 breakBeforeClose: false, //</p>以前不加換行 breakAfterClose: false //</p>以後不加換行7 }); } } }); }; </script>
關於這部份內容,更多內容參看 http://docs.ckeditor.com/#!/guide/dev_output_format
沒有CKFinder,CKEditor做爲一個編輯器,也是能夠正常使用的,可是沒法在編輯器裏瀏覽服務器上的用戶上傳文件。因此要整合CKFinder。
Step1:在頁面中引入CKFinder的js文件
<script type="text/javascript" src="${contextPath}/ckfinder2.3.1/ckfinder.js"></script>
Step2:建立CKFinder實例
<script type="text/javascript"> var editor = null; window.onload = function() { editor = CKEDITOR.replace( 'content', { customConfig:'${contextPath}/ckeditor4.1/jwc_config.js' }); CKFinder.setupCKEditor( editor, '${contextPath}/ckfinder2.3.1/' ); }; </script>
最後一段代碼(CKFinder.setupCKEditor...),第一個參數是CKEditor實例,第二個參數是ckfinder的目錄(最好寫絕對路徑),注意最後要帶斜槓'/'。
Step3:在CKEditor裏配置經過哪一個頁面或者程序來瀏覽和上傳文件
找到你的項目裏配置CKEditor的位置(參看本文CKEditor的三種配置方式部分),配置如下內容:
CKEDITOR.editorConfig = function( config ) { //其餘一些配置 filebrowserBrowseUrl = '/ckfinder2.3.1/ckfinder.html'; filebrowserImageBrowseUrl = '/ckfinder2.3.1/ckfinder.html?type=Images'; filebrowserFlashBrowseUrl = '/ckfinder2.3.1/ckfinder.html?type=Flash'; filebrowserUploadUrl = '/ckfinder2.3.1/core/connector/java/connector.java?command=QuickUpload&type=Files'; filebrowserImageUploadUrl = '/ckfinder2.3.1/core/connector/java/connector.java?command=QuickUpload&type=Images'; filebrowserFlashUploadUrl = '/ckfinder2.3.1/core/connector/java/connector.java?command=QuickUpload&type=Flash'; };
上面的六行代碼,指定了經過ckfinder2.3.1/ckfinder.html來瀏覽圖片或者其餘文件,經過/ckfinder2.3.1/core/connector/java/connector.java來上傳文件。
找到yourapp/WEB-INF/ckfinder.xml,編輯其中的內容。下面簡要介紹一下每一項的含義,其餘未介紹的內容請參照ckfinder.xml自己的註釋以及 這裏。
找到yourapp/WEB-INF/web.xml,添加如下內容:
<servlet> <servlet-name>ConnectorServlet</servlet-name> <servlet-class>com.ckfinder.connector.ConnectorServlet</servlet-class> <init-param> <param-name>XMLConfig</param-name> <param-value>/WEB-INF/ckfinder.xml</param-value> </init-param> <init-param> <param-name>debug</param-name> <param-value>false</param-value> </init-param> <load-on-startup>1</load-on-startup> </servlet> <servlet-mapping> <servlet-name>ConnectorServlet</servlet-name> <url-pattern> /ckfinder2.3.1/core/connector/java/connector.java </url-pattern> </servlet-mapping>
上面配置裏第一個init-param是指定CKFinder的配置文件位置。也就是上面第8部分提到的那個配置文件。
目前來講,CKFinder可以正常地使用了。可是,即使沒有你的項目的管理權限,在瀏覽器中輸入yoursite/ckfinder2.3.1/ckfinder.html,也同樣能看到你的服務器上存放的那些文件,他們甚至能夠上傳和刪除文件。有兩個地方能夠增強CKFinder的安全性。
<userRoleSessionVar>CKFinder_UserRole</userRoleSessionVar> <accessControls> <accessControl> <role>admin</role> <resourceType>*</resourceType> <folder>/</folder> <folderView>true</folderView> <folderCreate>true</folderCreate> <folderRename>true</folderRename> <folderDelete>false</folderDelete> <fileView>true</fileView> <fileUpload>true</fileUpload> <fileRename>true</fileRename> <fileDelete>false</fileDelete> </accessControl> </accessControls>
而後在java代碼中合適的位置,好比login()方法裏,添加如下代碼
request.getSession().setAttribute("CKFinder_UserRole", "admin");
系統會在訪問yoursite/ckfinder2.3.1/ckfinder.html時(包括點擊下圖的「瀏覽服務器」按鈕),檢查CKFinder_UserRole的值是什麼,它具備的權限是什麼。若是一我的沒有登陸系統,而是直接訪問yoursite/ckfinder2.3.1/ckfinder.html,那麼系統就會檢查到CKFinder_UserRole是null,他就看不到服務器上的文件。
在yourapp/WEB-INF/web.xml裏,修改關於ckfinder的配置,增長一段代碼:
<servlet> <servlet-name>ConnectorServlet</servlet-name> <servlet-class>com.ckfinder.connector.ConnectorServlet</servlet-class> <init-param> <param-name>configuration</param-name> <param-value>mypackage.CKFinderConfiguration</param-value> </init-param> <init-param> <param-name>XMLConfig</param-name> <param-value>/WEB-INF/ckfinder.xml</param-value> </init-param> <init-param> <param-name>debug</param-name> <param-value>false</param-value> </init-param> <load-on-startup>1</load-on-startup> </servlet> <servlet-mapping> <servlet-name>ConnectorServlet</servlet-name> <url-pattern> /ckfinder2.3.1/core/connector/java/connector.java </url-pattern> </servlet-mapping>
在包路徑mypackage下建立一個類CKFinderConfiguration(包路徑和類名按照本身的項目代碼組織狀況來取名),代碼以下:
import com.ckfinder.connector.configuration.Configuration; public class CKFinderConfiguration extends Configuration { public CKFinderConfiguration(ServletConfig servletConfig) { super(servletConfig); } @Override protected Configuration createConfigurationInstance() { return new CKFinderConfiguration(this.servletConf); } @Override public boolean checkAuthentication(final HttpServletRequest request){ String userid = request.getSession().getAttribute("userid"); boolean logined = !userid.equals(""); return logined; } }
關鍵在於checkAuthentication()方法。能夠在checkAuthentication()方法裏編寫關於用戶認證的一些判斷,好比用戶是否登陸系統,用戶是否有權限管理上傳文件。若是符合條件,就返回ture,不然返回false。
兩種方法均可以讓ckfinder更安全,固然同時使用會更好。可是注意二者區別,後者只能在比較粗的粒度進行控制。
原文: http://www.cnblogs.com/yuepeng/archive/2013/04/01/2992097.html
1.官方文檔,演示,下載地址:http://ueditor.baidu.com/website/index.html
2.百度編輯器的好:Editor是由百度web前端研發部開發所見即所得富文本web編輯器,具備輕量,可定製,注重用戶體驗等特色。
3.若是想定製你想要的編輯器功能:查看官方網站的下載頁面便可。
4.編輯器展現:
5.百度編輯器配置。
1.載入js,css文件
<script src="ueditor/editor_config.js" type="text/javascript"></script> <script src="ueditor/editor_all.js" type="text/javascript"></script> <link href="ueditor/themes/default/ueditor.css" rel="stylesheet" type="text/css" />
2.頁面配置
<div id="myEditor"></div> //能夠是aspx控件 只要id正確便可 <script type="text/javascript"> var ue = new baidu.editor.ui.Editor(); ue.render("myEditor"); //這裏填寫要改變爲編輯器的控件id </script>
3.editor_config.js 文件中的路徑配置
var tmp = window.location.pathname; URL = window.UEDITOR_HOME_URL || "/SomePackage/Ueditor/ueditor/"; //這裏你能夠配置成ueditor目錄在您網站的相對路徑或者絕對路徑(指以http開頭的絕對路徑)
4.若是你要使用傳圖片功能,還須要修改net文件下的幾個文件截圖說明吧(這個路徑能夠直接刪除的,試試。不行了本身再調整下)。
改成-->
同理將net文件下其它文件相似的錯誤更正後便可上傳圖片。
圖片上傳默認位置爲:net文件夾下。上傳一張打開便可發現一個upload文件夾。
5.ueditor 的不少默認配置都在 editor_config.js這個文件中,細心看的話,開啓或關閉其中的配置是能夠解決不少問題的。
6.我在使用過程當中還遇到過編輯器內容影響總體頁面的佈局問題,這問題是在editor_all.js這個文件中修改的默認樣式問題的。
/** * 渲染編輯器的DOM到指定容器,必須且只能調用一次 * @public * @function * @param {Element|String} container */ render:function ( container ) { var me = this, options = me.options; if ( container.constructor === String ) { container = document.getElementById( container ); } if ( container ) { var useBodyAsViewport = ie && browser.version < 9, html = ( ie && browser.version < 9 ? '' : '<!DOCTYPE html>') + '<html xmlns=\'http://www.w3.org/1999/xhtml\'' + (!useBodyAsViewport ? ' class=\'view\'' : '') + '><head>' + ( options.iframeCssUrl ? '<link rel=\'stylesheet\' type=\'text/css\' href=\'' + utils.unhtml( options.iframeCssUrl ) + '\'/>' : '' ) + '<style type=\'text/css\'>' + //這些默認屬性不可以讓用戶改變 //選中的td上的樣式 '.selectTdClass{background-color:#3399FF !important;}' + 'table.noBorderTable td{border:1px dashed #ddd !important}' + //插入的表格的默認樣式 'table{clear:both;margin-bottom:10px;border-collapse:collapse;word-break:break-all;}' + //分頁符的樣式 '.pagebreak{display:block;clear:both !important;cursor:default !important;width: 100% !important;margin:0;}' + //錨點的樣式,注意這裏背景圖的路徑 '.anchorclass{background: url(\'' + me.options.UEDITOR_HOME_URL + 'themes/default/images/anchor.gif\') no-repeat scroll left center transparent;border: 1px dotted #0000FF;cursor: auto;display: inline-block;height: 16px;width: 15px;}' + //設置四周的留邊 '.view{padding:0;word-wrap:break-word;cursor:text;height:100%;}\n' + //設置默認字體和字號 'body{margin:8px;font-family:\'宋體\';font-size:16px;}' + //針對li的處理 'li{clear:both}' + //設置段落間距 'p{margin:5px 0;}' + ( options.initialStyle || '' ) + '</style></head><body' + (useBodyAsViewport ? ' class=\'view\'' : '') + '></body>';
最後對這個編輯器總結下:很好用的,代碼很容易讀懂,便於修改配置爲本身喜歡的想要的。