近期在產品的開發工做中遇到要使用富文本編輯器的地方。因而對比了幾款編輯器, 最後選擇了wangEditor。 javascript
優勢:輕量、簡潔、界面美觀、文檔齊全。 缺點: 相較於百度ueditor等編輯器功能較少。 文檔地址:https://www.kancloud.cn/wangfupeng/wangeditor3/332599html
使用方式:java
1. 建立一個容器:ajax
<div id="editor"> </div>
2.引入js文件後端
<script src="~/Editor/wangEditor.js"></script>
3.初始化服務器
// 富文本編輯器 var E = window.wangEditor; var editor = new E("#editor")
editor.create()
4.上傳圖片網絡
支持網絡圖片與本地上傳編輯器
網絡圖片直接輸入地址便可。函數
本地上傳默認是關閉的。分爲Base64與上傳至服務器。post
4.1 Base64格式
開啓本地上傳Base64
// 啓用"上傳圖片"tab base64格式 editor.customConfig.uploadImgShowBase64 = true;
開啓以後直接拖拽或手動選擇上傳便可。
Base64碼
4.2 上傳至服務器
配置上傳接口,可是不能與Base64同時配置。
editor.customConfig.uploadImgServer = '/Storage/Upload'
js上傳配置:用的官方文檔的默認配置。 詳情能夠參考官網文檔:https://www.kancloud.cn/wangfupeng/wangeditor3/335782
注:全部的配置代碼都須要放在 editor.create() 以前。
editor.customConfig.uploadImgHooks = { before: function (xhr, editor, files) { // 圖片上傳以前觸發 // xhr 是 XMLHttpRequst 對象,editor 是編輯器對象,files 是選擇的圖片文件 // 若是返回的結果是 {prevent: true, msg: 'xxxx'} 則表示用戶放棄上傳 // return { // prevent: true, // msg: '放棄上傳' // } }, success: function (xhr, editor, result) { // 圖片上傳並返回結果,圖片插入成功以後觸發 // xhr 是 XMLHttpRequst 對象,editor 是編輯器對象,result 是服務器端返回的結果 }, fail: function (xhr, editor, result) { console.log(result) // 圖片上傳並返回結果,但圖片插入錯誤時觸發 // xhr 是 XMLHttpRequst 對象,editor 是編輯器對象,result 是服務器端返回的結果 }, error: function (xhr, editor) { // 圖片上傳出錯時觸發 // xhr 是 XMLHttpRequst 對象,editor 是編輯器對象 }, timeout: function (xhr, editor) { // 圖片上傳超時時觸發 // xhr 是 XMLHttpRequst 對象,editor 是編輯器對象 }, // 若是服務器端返回的不是 {errno:0, data: [...]} 這種格式,可以使用該配置 // (可是,服務器端返回的必須是一個 JSON 格式字符串!!!不然會報錯) customInsert: function (insertImg, result, editor) { // 圖片上傳並返回結果,自定義插入圖片的事件(而不是編輯器自動插入圖片!!!) // insertImg 是插入圖片的函數,editor 是編輯器對象,result 是服務器端返回的結果 // 舉例:假如上傳圖片成功後,服務器端返回的是 {url:'....'} 這種格式,便可這樣插入圖片: var url = result.Url insertImg(url) // result 必須是一個 JSON 格式字符串!!!不然報錯 } }
4.3 後端接口
只需將文件的最終存儲路徑按指定的格式/或自定義格式放回便可。
5.將編輯器內的數據傳遞給後臺方法
我這裏是先將編輯器內的數據賦值給 textarea ,而後使用ajax的方式提交textarea的數據。
5.1 建立textarea 並隱藏
<textarea id="text1" style="width:100%; height:200px;display:none;"></texta
5.2 在js中配置
// 隱藏的文本域 var $text1 = $('#text1') // 監聽編輯器內容的變化,html爲變化後的數據 editor.customConfig.onchange = function (html) { // 監控變化,同步更新到 textarea $text1.val(html) }
5.3 提交數據並在後臺保存
添加一個按鈕
<button id="btnSubmit2">保存 </button>
ajax提交
$("#btnSubmit2").click(function () { // 文本域的內容 var text1 = $('#text1').val(); $.ajax({ type: "post", data: { "editorHtml": text1 }, url: "/Editor/Save", success: function (data) { console.log(data) }); })
6.其餘配置及功能請直接訪問文檔: