掃二維碼與項目經理溝通
我們在微信上24小時期待你的聲音
解答本文疑問/技術咨詢/運營咨詢/技術建議/互聯網交流
*.swan文件Editor 富文本編輯器動態(tài)庫提供了支持富文本編輯的editor組件和操作editor組件的createEditorContext方法,通過使用該動態(tài)庫,用戶可以對圖片、文本進行編輯。編輯器導出內容支持帶標簽的html和純文本的text,編輯器內部采用delta格式進行存儲。

成都創(chuàng)新互聯公司專注于崇州網站建設服務及定制,我們擁有豐富的企業(yè)做網站經驗。 熱誠為您提供崇州營銷型網站建設,崇州網站制作、崇州網頁設計、崇州網站官網定制、小程序開發(fā)服務,打造崇州網絡公司原創(chuàng)品牌,更為您提供崇州網站排名全網營銷落地服務。
富文本編輯器組件中設置了一些基本樣式使得內容可以正確展示,在開發(fā)過程中可以進行覆蓋,在其他組件或者環(huán)境中使用富文本編輯器導出的html時,需要額外維護以下DOM結構:
參考使用動態(tài)庫中提供的方法,在app.json中增添一項dynamicLib,與pages同級。
"dynamicLib": {"editorLib": {"provider": "swan-editor"}},
在每個使用到富文本編輯器組件的頁面,配置*.json文件如:
{"usingSwanComponents": {"editor": "dynamicLib://editorLib/editor"}}
*.swan文件
read-only="{{readOnly}}"placeholder="{{placeholder}}"/>
這是一種最基本的使用方式,其中readOnly和placeholder的值可以在*.js文件中設置。
Page({data: {readOnly: false,placeholder: '請輸入...'}});
| 屬性 | 類型 | 默認值 | 必填 | 說明 |
|---|---|---|---|---|
| read-only | Boolean | false | 否 | 設置編輯器為只讀 |
| placeholder | String | 否 | 編輯器提示信息 | |
| show-img-size | Boolean | false | 否 | 點擊圖片時顯示圖片大小控件 |
| show-img-resize | Boolean | false | 否 | 點擊圖片時顯示圖片縮放控件 |
| show-img-toolbar | Boolean | false | 否 | 點擊圖片時顯示圖片工具欄控件 |
| bindready | EventHandle | 否 | 編輯器初始化完成時觸發(fā) | |
| bindfocus | EventHandle | 否 | 編輯器聚焦時觸發(fā),event.detail = { html, text, delta } | |
| bindblur | EventHandle | 否 | 編輯器失去焦點時觸發(fā),event.detail = { html, text, delta } | |
| bindinput | EventHandle | 否 | 編輯器內容改變時觸發(fā),event.detail = { html, text, delta } | |
| bindstatuschange | EventHandle | 否 | 編輯器內容或樣式通過EditorContext中的方法改變時觸發(fā),返回選區(qū)已設置的樣式 |
編輯器內支持部分HTML標簽和內聯樣式,但不支持class和id。
不滿足的標簽會被忽略,
div標簽會被轉換為p標簽存儲。
| 類型 | 節(jié)點 |
|---|---|
| 行內元素 | |
| 塊級元素 |
內聯樣式僅支持設置在行內元素或塊級元素上,不能同時設置,如
text-align歸類為塊級樣式,在span標簽上設置是無效的。
| 類型 | 樣式 |
|---|---|
| 塊級樣式 | text-align、direction |
| 行內樣式 | color、background-color |
Editor 富文本編輯器動態(tài)庫提供了createEditorContext的方法來獲取某個editor組件的實例,EditorContext通過id和一個editor組件綁定,操作對應的editor組件。
Page({onEditorReady() {this.editorCtx = requireDynamicLib('editorLib').createEditorContext('editorId');}});
解釋:編輯器失焦。
參數:Object object
| 屬性 | 類型 | 默認值 | 必填 | 說明 |
|---|---|---|---|---|
| success | Function | 否 | 接口調用成功的回調函數 | |
| fail | Function | 否 | 接口調用失敗的回調函數 | |
| complete | Function | 否 | 接口調用結束的回調函數(調用成功、失敗都會執(zhí)行) |
解釋:清空編輯器內容。
參數:Object object
| 屬性 | 類型 | 默認值 | 必填 | 說明 |
|---|---|---|---|---|
| success | Function | 否 | 接口調用成功的回調函數 | |
| fail | Function | 否 | 接口調用失敗的回調函數 | |
| complete | Function | 否 | 接口調用結束的回調函數(調用成功、失敗都會執(zhí)行) |
解釋:修改格式。
對已經應用樣式的選區(qū)設置會取消樣式。
參數
String name:屬性
String value:值
支持設置的樣式列表
| name | value |
|---|---|
| bold | |
| italic | |
| underline | |
| strike | |
| ins | |
| script | sub / super |
| header | H1 / H2 / H3 / H4 / H5 / H6 |
| align | center / right / justify |
| direction | rtl |
| indent | -1 / +1 |
| list | ordered / bullet / check |
| color | hex color |
| backgroudColor | hex color |
解釋:獲取編輯器內容。
參數:Object object
| 屬性 | 類型 | 默認值 | 必填 | 說明 |
|---|---|---|---|---|
| success | Function | 否 | 接口調用成功的回調函數 | |
| fail | Function | 否 | 接口調用失敗的回調函數 | |
| complete | Function | 否 | 接口調用結束的回調函數(調用成功、失敗都會執(zhí)行) |
object.success 回調函數
參數:Object res
| 屬性 | 類型 | 說明 |
|---|---|---|
| html | String | 帶標簽的html內容 |
| text | String | 純文本內容 |
| delta | Object | 描述內容的delta對象 |
解釋:獲取編輯器內選區(qū)的純文本內容。當編輯器失焦或未選中一段區(qū)間時,返回內容為空。
參數:Object object
| 屬性 | 類型 | 默認值 | 必填 | 說明 |
|---|---|---|---|---|
| success | Function | 否 | 接口調用成功的回調函數 | |
| fail | Function | 否 | 接口調用失敗的回調函數 | |
| complete | Function | 否 | 接口調用結束的回調函數(調用成功、失敗都會執(zhí)行) |
object.success 回調函數
參數:Object res
| 屬性 | 類型 | 說明 |
|---|---|---|
| text | String | 純文本內容 |
解釋:插入分隔符。
參數:Object object
| 屬性 | 類型 | 默認值 | 必填 | 說明 |
|---|---|---|---|---|
| success | Function | 否 | 接口調用成功的回調函數 | |
| fail | Function | 否 | 接口調用失敗的回調函數 | |
| complete | Function | 否 | 接口調用結束的回調函數(調用成功、失敗都會執(zhí)行) |
解釋:插入圖片。
參數:Object object
| 屬性 | 類型 | 默認值 | 必填 | 說明 |
|---|---|---|---|---|
| src | String | 是 | 圖片地址,目前僅支持 http(s)、base64、本地圖片 | |
| alt | String | 否 | 圖片無法顯示時的替代文本 | |
| extClass | String | 否 | 添加到圖片 img 標簽上的類名 | |
| data | Object | 否 | data 會被序列化為name1=value1&name2=value2的格式掛在屬性 data-custom 上 | |
| success | Function | 否 | 接口調用成功的回調函數 | |
| fail | Function | 否 | 接口調用失敗的回調函數 | |
| complete | Function | 否 | 接口調用結束的回調函數(調用成功、失敗都會執(zhí)行) |
解釋:覆蓋當前選區(qū),設置一段文本。
參數:Object object
| 屬性 | 類型 | 默認值 | 必填 | 說明 |
|---|---|---|---|---|
| text | String | 否 | 文本內容 | |
| success | Function | 否 | 接口調用成功的回調函數 | |
| fail | Function | 否 | 接口調用失敗的回調函數 | |
| complete | Function | 否 | 接口調用結束的回調函數(調用成功、失敗都會執(zhí)行) |
解釋:清除當前選區(qū)的樣式。
參數:Object object
| 屬性 | 類型 | 默認值 | 必填 | 說明 |
|---|---|---|---|---|
| success | Function | 否 | 接口調用成功的回調函數 | |
| fail | Function | 否 | 接口調用失敗的回調函數 | |
| complete | Function | 否 | 接口調用結束的回調函數(調用成功、失敗都會執(zhí)行) |
解釋:初始化編輯器內容,html和delta同時存在時僅delta生效。
需要注意的是,通過
setContents設置編輯器內容時,由于支持的html標簽和內聯樣式有限,建議開發(fā)者在小程序內通過delta進行插入。
參數:Object object
| 屬性 | 類型 | 默認值 | 必填 | 說明 |
|---|---|---|---|---|
| html | String | 否 | 帶標簽的html內容 | |
| delta | Object | 否 | 描述內容的delta對象 | |
| success | Function | 否 | 接口調用成功的回調函數 | |
| fail | Function | 否 | 接口調用失敗的回調函數 | |
| complete | Function | 否 | 接口調用結束的回調函數(調用成功、失敗都會執(zhí)行) |
解釋:將編輯器光標處滾動到窗口可視區(qū)域內。
解釋:恢復。
參數:Object object
| 屬性 | 類型 | 默認值 | 必填 | 說明 |
|---|---|---|---|---|
| success | Function | 否 | 接口調用成功的回調函數 | |
| fail | Function | 否 | 接口調用失敗的回調函數 | |
| complete | Function | 否 | 接口調用結束的回調函數(調用成功、失敗都會執(zhí)行) |
解釋:撤銷。
參數:Object object
| 屬性 | 類型 | 默認值 | 必填 | 說明 |
|---|---|---|---|---|
| success | Function | 否 | 接口調用成功的回調函數 | |
| fail | Function | 否 | 接口調用失敗的回調函數 | |
| complete | Function | 否 | 接口調用結束的回調函數(調用成功、失敗都會執(zhí)行) |
在開發(fā)者工具中打開
在開發(fā)者工具中打開
在 WEB IDE 中打開
掃碼體驗
代碼示例
請使用百度APP掃碼
id="editorId"class="editor"placeholder="開始輸入..."bindready="onEditorReady"bindstatuschange="onStatusChange"show-img-sizeshow-img-resizeshow-img-toolbar/>
const INIT_CONTENT_HTML = `支持插入圖片
支持以下字符樣式
bold粗體italic斜體underline下劃線sub下標super上標支持以下列表樣式
- 有序列表
- 有序列表
無序列表
無序列表
選框列表
選框列表
支持以下字符大小
H1 一級標題
H2 二級標題
H3 三級標題
H4 四級標題
H5 五級標題
H6 六級標題
支持以下對齊方式
center中間對齊
right 右對齊
justify 自動對齊
color 支持設置字體及背景顏色`;Page({ data: { formats: {} }, // 編輯器初始化完成時觸發(fā)的事件,用于加載編輯器初始內容 onEditorReady() { this.editorCtx = requireDynamicLib('editorLib').createEditorContext('editorId'); this.initContent(); }, // 設置編輯器初始內容 initContent() { this.editorCtx.setContents({ html: INIT_CONTENT_HTML }); }, // 編輯器內插入圖片函數 insertImage() { const editorCtx = this.editorCtx; swan.chooseImage({ count: 1, success: res => { editorCtx.insertImage({ src: res.tempFilePaths[0], alt: '插入圖片', data: { id: 'insert-image', role: 'user' }, success: () => { swan.showToast({ title: '插入圖片成功' }); }, fail: err => { swan.showToast({ title: '插入圖片失敗', icon: 'none' }); } }); } }); }, /** * 更改編輯器選區(qū)為不同格式 * * @param {Object} e.target.dataset 獲取 swan 頁面的傳參:name、value * */ format(e) { const {name, value} = e.target.dataset; if (!name) { return; } this.editorCtx.format(name, value); }, /** * 編輯器內容或樣式通過方法改變時觸發(fā)的事件,返回選區(qū)已設置的樣式 * * @param {Object} e.detail 事件對象 * */ onStatusChange(e) { const formats = e.detail; this.setData({ formats }); }, // 編輯器中插入分隔符 insertDivider() { this.editorCtx.insertDivider(); }, // 清除編輯器中內容,與工具欄的垃圾桶圖標對應 clear() { const editorCtx = this.editorCtx; swan.showModal({ title: '清空編輯器', content: '確定清空編輯器全部內容?', success: res => { if (res.confirm) { editorCtx.clear(); } } }); }});
@font-face {font-family: "iconfont"; /* project id 2000141 */src: url(http://at.alicdn.com/t/font_2000141_vma36b09h9.wof) format("woff"),url(http://at.alicdn.com/t/font_2000141_vma36b09h9.ttf) format("truetype"),url(http://at.alicdn.com/t/font_2000141_vma36b09h9.svg#iconfont) format("svg");}.iconfont {display: inline-block;font-size: 22px;width: 30px;height: 30px;font-family: "iconfont" !important;font-style: normal;-webkit-font-smoothing: antialiased;-moz-osx-font-smoothing: grayscale;}.icon-image:before {content: "\e60e";}.icon-format-header-1:before {content: "\e610";}.icon-format-header-2:before {content: "\e60f";}.icon-format-bold:before {content: "\e60a";}.icon-format-list:before {content: "\e60b";}.icon-divider:before {content: "\e609";}.icon-clear:before {content: "\e60c";}.icon-format-italic:before {content: "\e60d";}.editor-wrap {width: 100%;height: 100vh;}.editor {display: block;box-sizing: border-box;width: 100%;height: 100%;margin-top: 50px;padding: 38.043rpx 30.797rpx;}swan-editor {display: block;}.ql-editor {height: 100%;}.toolbar {position: fixed;box-sizing: border-box;padding: 17px 17px;width: 100%;height: 45px;top: 30;left: 0;border-top: .906rpx solid #e6e6e6;border-bottom: .906rpx solid #e6e6e6;display: flex;align-items: center;justify-content: space-between;background-color: #fff;z-index: 99;}.ql-active {color: #3388ff;}

我們在微信上24小時期待你的聲音
解答本文疑問/技術咨詢/運營咨詢/技術建議/互聯網交流