const contents = { html: `

支持插入图片


image-alt


支持以下字符样式

bold粗体 italic斜体 underline下划线

sub下标 super上标


支持以下列表样式

  1. 有序列表
  2. 有序列表

支持以下字符大小

H1 一级标题

H2 二级标题

H3 三级标题

H4 四级标题

H5 五级标题
H6 六级标题

支持以下对齐方式

center中间对齐

right 右对齐

justify 自动对齐


color 支持设置字体及背景颜色`, }; Page({ onShareAppMessage() { return { title: 'editor', path: 'page/component/pages/editor/editor', }; }, data: { formats: {}, readOnly: false, placeholder: '开始输入...', editorHeight: 300, keyboardHeight: 0, isIOS: false, safeHeight: 0, toolBarHeight: 50, }, readOnlyChange() { this.setData({ readOnly: !this.data.readOnly, }); }, onLoad() { const { platform, safeArea, model, screenHeight } = xhs.getSystemInfoSync(); let safeHeight; if (safeArea) { safeHeight = screenHeight - safeArea.bottom; } else { safeHeight = 32; } this._safeHeight = safeHeight; const isIOS = platform === 'ios'; this.setData({ isIOS, safeHeight, toolBarHeight: isIOS ? safeHeight + 50 : 50 }); const that = this; this.updatePosition(0); let keyboardHeight = 0; xhs.onKeyboardHeightChange?.(res => { if (res.height === keyboardHeight) { return; } const duration = res.height > 0 ? res.duration * 1000 : 0; keyboardHeight = res.height; setTimeout(() => { xhs.pageScrollTo({ scrollTop: 0, success() { that.updatePosition(keyboardHeight); that.editorCtx.scrollIntoView(); }, }); }, duration); }); }, updatePosition(keyboardHeight) { const toolbarHeight = 50; const { windowHeight, platform } = xhs.getSystemInfoSync(); const editorHeight = keyboardHeight > 0 ? windowHeight - keyboardHeight - toolbarHeight : windowHeight; if (keyboardHeight === 0) { this.setData({ editorHeight, keyboardHeight, toolBarHeight: this.data.isIOS ? 50 + this._safeHeight : 50, safeHeight: this._safeHeight, }); } else { this.setData({ editorHeight, keyboardHeight, toolBarHeight: 50, safeHeight: 0, }); } }, calNavigationBarAndStatusBar() { const systemInfo = xhs.getSystemInfoSync(); const { statusBarHeight, platform } = systemInfo; const isIOS = platform === 'ios'; const navigationBarHeight = isIOS ? 44 : 48; return statusBarHeight + navigationBarHeight; }, onEditorReady() { const that = this; that.editorCtx = xhs.createEditorContext?.('editor'); this.clear(); this.setContents(); this.removeFormat(); this.insertDivider(); setTimeout(() => { this.editorCtx.getContents({ success: res => { console.log('getContents success', res); }, }); }, 1000); }, blur() { this.editorCtx.blur(); }, format(e) { const { name, value } = e.target.dataset; if (!name) return; console.log('format', name, value); this.editorCtx.format(name, value); }, onStatusChange(e) { const formats = e.detail; console.log('onStatusChange', e); this.setData({ formats }); }, insertDivider() { this.editorCtx.insertDivider({ success() { console.log('insert divider success'); }, }); }, clear() { this.editorCtx.clear({ success(res) { console.log('clear success', res); }, }); }, removeFormat() { this.editorCtx.removeFormat({ success: res => { console.log('removeFormat success', res); }, }); }, setContents() { this.editorCtx.setContents({ ...contents, success: res => { console.log('setContents success', res); }, }); }, insertDate() { const date = new Date(); const formatDate = `${date.getFullYear()}/${date.getMonth() + 1}/${date.getDate()}`; this.editorCtx.insertText({ text: formatDate, }); }, insertImage() { const that = this; xhs.chooseImage({ count: 1, success(res) { that.editorCtx.insertImage({ src: res.tempFilePaths[0], data: { id: 'abcd', role: 'god', }, width: '80%', success() { console.log('insert image success'); }, }); }, }); }, bindfocus(e) { console.log('bindfocus', e); }, bindblur(e) { console.log('bindblur', e); }, });